From owner-postgres95@postgres95.vnet.net Thu Feb 29 12:21:18 1996 Return-Path: Received: from portal.ilt.com by venus (4.1/ILT-1.1) id AA10247; Thu, 29 Feb 96 12:21:15 PST Received: from shiloh.vnet.net by portal.ilt.com (4.1/ILT-1.1) id AA06513; Thu, 29 Feb 96 12:18:55 PST Received: (from daemon@localhost) by shiloh.vnet.net (8.6.12/8.6.12) id MAA29478 for postgres95-outgoing; Thu, 29 Feb 1996 12:00:37 -0500 Received: from arcadia.CS.Berkeley.EDU (arcadia.CS.Berkeley.EDU [128.32.37.59]) by shiloh.vnet.net (8.6.12/8.6.12) with ESMTP id MAA29473 for ; Thu, 29 Feb 1996 12:00:31 -0500 Received: from arcadia.CS.Berkeley.EDU (localhost.Berkeley.EDU [127.0.0.1]) by arcadia.CS.Berkeley.EDU (8.6.10/8.6.3) with ESMTP id IAA26938 for ; Thu, 29 Feb 1996 08:49:54 -0800 From: Jolly Chen Message-Id: <199602291649.IAA26938@arcadia.CS.Berkeley.EDU> To: postgres95-announce@shiloh.vnet.net Subject: [PG95]: PATCH #2: using ~ or LIKE on null text fields cause core dump Date: Thu, 29 Feb 1996 08:49:54 -0800 Sender: owner-postgres95@postgres95.vnet.net Precedence: bulk Status: R Using LIKE or ~ operator on text type files which are null valued causes segmentation fault. Thanks to Salvador Ortiz Garcia, Robert Patrick, Paul 'Shag' Walmsley, and James Cooper for finding and fixing the problem. Apply the following patch. - Jolly =================================================================== RCS file: /usr/local/devel/pglite/cvs/src/RELEASE.patchlevel,v retrieving revision 1.7 diff -c -r1.7 RELEASE.patchlevel *** 1.7 1996/02/29 16:27:14 --- RELEASE.patchlevel 1996/02/29 16:27:55 *************** *** 3,10 **** ## This file is used to maintain sequencing of patches version: 1.01 ! patch level: 1 ! patch date: Wed Feb 28 08:33:28 PST 1996 --- 3,10 ---- ## This file is used to maintain sequencing of patches version: 1.01 ! patch level: 2 ! patch date: Thu Feb 29 08:18:25 PST 1996 Index: backend/utils/adt/like.c =================================================================== RCS file: /usr/local/devel/pglite/cvs/src/backend/utils/adt/like.c,v retrieving revision 1.2 diff -c -r1.2 like.c *** 1.2 1996/02/24 01:03:13 --- src/backend/utils/adt/like.c 1996/02/29 16:09:57 *************** *** 120,125 **** --- 120,126 ---- bool namelike(NameData *n, struct varlena *p) { + if (!n) return FALSE; return (fixedlen_like(n->data, p, NAMEDATALEN)); } *************** *** 132,137 **** --- 133,139 ---- bool textlike(struct varlena *s, struct varlena *p) { + if (!s) return FALSE; return (fixedlen_like(VARDATA(s), p, VARSIZE(s) - VARHDRSZ)); } Index: backend/utils/adt/regexp.c =================================================================== RCS file: /usr/local/devel/pglite/cvs/src/backend/utils/adt/regexp.c,v retrieving revision 1.14 diff -c -r1.14 regexp.c *** 1.14 1996/02/24 00:59:36 --- src/backend/utils/adt/regexp.c 1996/02/29 16:07:09 *************** *** 240,245 **** --- 240,246 ---- bool nameregexeq(NameData *n, struct varlena *p) { + if (!n) return FALSE; return (fixedlen_regexeq(n->data, p, NAMEDATALEN, REG_EXTENDED)); } bool *************** *** 251,256 **** --- 252,258 ---- bool textregexeq(struct varlena *s, struct varlena *p) { + if (!s) return (FALSE); return (fixedlen_regexeq(VARDATA(s), p, VARSIZE(s) - VARHDRSZ, REG_EXTENDED)); } *************** *** 319,324 **** --- 321,327 ---- bool texticregexeq(struct varlena *s, struct varlena *p) { + if (!s) return FALSE; return (fixedlen_regexeq(VARDATA(s), p, VARSIZE(s) - VARHDRSZ, REG_ICASE | REG_EXTENDED)); } *************** *** 332,337 **** --- 335,341 ---- bool nameicregexeq(NameData *n, struct varlena *p) { + if (!n) return FALSE; return (fixedlen_regexeq(n->data, p, NAMEDATALEN, REG_ICASE | REG_EXTENDED)); }