From owner-freebsd-current@FreeBSD.ORG Thu Aug 11 21:11:44 2011 Return-Path: Delivered-To: freebsd-current@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8B27A106564A for ; Thu, 11 Aug 2011 21:11:44 +0000 (UTC) (envelope-from ttsestt@gmail.com) Received: from mail-qw0-f54.google.com (mail-qw0-f54.google.com [209.85.216.54]) by mx1.freebsd.org (Postfix) with ESMTP id 46B6E8FC15 for ; Thu, 11 Aug 2011 21:11:43 +0000 (UTC) Received: by qwc9 with SMTP id 9so1694373qwc.13 for ; Thu, 11 Aug 2011 14:11:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=from:to:subject:user-agent:date:message-id:mime-version :content-type; bh=ucp9vTHu2BY30kkmgMqObVEK+MRYSxOumvulWxuCrjE=; b=aTCNmdSPUFOGDAWINQ7hv4hYDRKl3Pegui4TabccvkVMswJPWS37YXZ0Vgro+NMs3j Fk40c+mgWrmxjMYZmytbxoQTeGBgeDhYyoiE1P0sw1kL+oNhArDj9iUTgOB54qTffmyl ec3fYBr8yaYzR1/R8fJ66LXob1LwzNCyW2e2Y= Received: by 10.224.181.79 with SMTP id bx15mr70347qab.372.1313097103549; Thu, 11 Aug 2011 14:11:43 -0700 (PDT) Received: from localhost (tor-exit-router35-readme.formlessnetworking.net [199.48.147.35]) by mx.google.com with ESMTPS id b6sm1831852qcb.35.2011.08.11.14.11.41 (version=SSLv3 cipher=OTHER); Thu, 11 Aug 2011 14:11:43 -0700 (PDT) From: Test Rat To: freebsd-current@freebsd.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (berkeley-unix) Date: Fri, 12 Aug 2011 01:11:36 +0400 Message-ID: <86k4ajtzzr.fsf@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Subject: [bsdgrep] fgrepcomp(), ignore case and segfault with unicode locale X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 11 Aug 2011 21:11:44 -0000 A quick test $ env -i bsdgrep -Fi without_nls usr.bin/grep/grep.c $ env -i gnugrep -Fi without_nls usr.bin/grep/grep.c #ifndef WITHOUT_NLS #ifndef WITHOUT_NLS #ifndef WITHOUT_NLS shows that bsd fgrep already fails to ignore case. And if you throw a few more options to the mix it'd crash, e.g. $ env -i LC_CTYPE=en_US.UTF-8 TERM=xterm bsdgrep --color -Fir without_nls usr.bin/grep/ [...] Program received signal SIGSEGV, Segmentation fault. 0x0000000801007ff2 in memchr (s=0x61167a, c=10, n=18446744073707490297) at /usr/src/lib/libc/string/memchr.c:48 48 if (*p++ == (unsigned char)c) (gdb) bt #0 0x0000000801007ff2 in memchr (s=0x61167a, c=10, n=18446744073707490297) at /usr/src/lib/libc/string/memchr.c:48 #1 0x0000000801007b03 in __sfvwrite (fp=0x801247770, uio=0x7fffffffd8f0) at /usr/src/lib/libc/stdio/fvwrite.c:170 #2 0x0000000801007698 in fwrite (buf=0x608c03, size=18446744073709551606, count=1, fp=0x801247770) at /usr/src/lib/libc/stdio/fwrite.c:95 #3 0x0000000000405498 in printline (line=0x7fffffffdb70, sep=58, matches=0x7fffffffd990, m=9) at /usr/src/usr.bin/grep/util.c:500 #4 0x0000000000404f51 in procline (l=0x7fffffffdb70, nottext=0) at /usr/src/usr.bin/grep/util.c:381 #5 0x000000000040489f in procfile (fn=0x80140b600 "usr.bin/grep/nls/es_ES.ISO8859-1.msg") at /usr/src/usr.bin/grep/util.c:239 #6 0x00000000004044d7 in grep_tree (argv=0x7fffffffdd30) at /usr/src/usr.bin/grep/util.c:163 #7 0x0000000000403ea9 in main (argc=5, argv=0x7fffffffdd10) at /usr/src/usr.bin/grep/grep.c:689 (gdb) bt f #0 0x0000000801007ff2 in memchr (s=0x61167a, c=10, n=18446744073707490297) at /usr/src/lib/libc/string/memchr.c:48 p = (const unsigned char *) 0x800000 #1 0x0000000801007b03 in __sfvwrite (fp=0x801247770, uio=0x7fffffffd8f0) at /usr/src/lib/libc/stdio/fvwrite.c:170 len = 18446744073709516159 p = 0x61167a "" iov = (struct __siov *) 0x7fffffffd8f0 w = 880 s = 880 nl = 0x611679 "\n" nlknown = 0 nldist = 0 #2 0x0000000801007698 in fwrite (buf=0x608c03, size=18446744073709551606, count=1, fp=0x801247770) at /usr/src/lib/libc/stdio/fwrite.c:95 n = 18446744073709551606 uio = {uio_iov = 0x7fffffffd8e0, uio_iovcnt = 1, uio_resid = -35457} iov = {iov_base = 0x608c03, iov_len = 18446744073709551606} #3 0x0000000000405498 in printline (line=0x7fffffffdb70, sep=58, matches=0x7fffffffd990, m=9) at /usr/src/usr.bin/grep/util.c:500 a = 99 i = 9 n = 1 #4 0x0000000000404f51 in procline (l=0x7fffffffdb70, nottext=0) at /usr/src/usr.bin/grep/util.c:381 matches = {{rm_so = 0, rm_eo = 11}, {rm_so = 11, rm_eo = 22}, {rm_so = 22, rm_eo = 33}, {rm_so = 33, rm_eo = 44}, { rm_so = 44, rm_eo = 55}, {rm_so = 55, rm_eo = 66}, {rm_so = 66, rm_eo = 77}, {rm_so = 77, rm_eo = 88}, {rm_so = 88, rm_eo = 99}, {rm_so = 21131328, rm_eo = 8}, {rm_so = -9696, rm_eo = 32767}, {rm_so = 16101362, rm_eo = 8}, {rm_so = 21131328, rm_eo = 8}, {rm_so = 16103767, rm_eo = 0}, {rm_so = 37, rm_eo = 0}, {rm_so = 8, rm_eo = 0}, {rm_so = -9632, rm_eo = 32767}, { rm_so = -8944, rm_eo = 32767}, {rm_so = -9664, rm_eo = 32767}, {rm_so = 16103767, rm_eo = 8}, {rm_so = 6327289, rm_eo = 0}, { rm_so = 437, rm_eo = 0}, {rm_so = -9584, rm_eo = 10}, {rm_so = 6327200, rm_eo = 0}, {rm_so = -9776, rm_eo = 0}, { rm_so = 6327290, rm_eo = 0}, {rm_so = -9536, rm_eo = 32767}, {rm_so = 4204252, rm_eo = 0}, {rm_so = -9584, rm_eo = 32767}, { rm_so = 6327200, rm_eo = 0}, {rm_so = -9352, rm_eo = 32767}, {rm_so = 21004392, rm_eo = 8}} pmatch = {rm_so = 88, rm_eo = 99} st = 99 i = 1 c = 1 m = 9 r = 0 #5 0x000000000040489f in procfile (fn=0x80140b600 "usr.bin/grep/nls/es_ES.ISO8859-1.msg") at /usr/src/usr.bin/grep/util.c:239 f = (struct file *) 0x801408068 sb = {st_dev = 745804815, st_ino = 171971, st_mode = 33188, st_nlink = 1, st_uid = 1001, st_gid = 1001, st_rdev = 4294967295, st_atim = {tv_sec = 1292381124, tv_nsec = 0}, st_mtim = {tv_sec = 1280426577, tv_nsec = 0}, st_ctim = { tv_sec = 1292381124, tv_nsec = 165601426}, st_size = 526, st_blocks = 2, st_blksize = 4096, st_flags = 0, st_gen = 0, st_lspare = 0, st_birthtim = {tv_sec = 1292381124, tv_nsec = 165601426}} ln = {off = 0, len = 89, dat = 0x608ba0 "$ $FreeBSD: head/usr.bin/grep/nls/es_ES.ISO8859-1.msg 210622 2010-07-29 18:02:57Z gabor $\n$\n$set 1\n$quote \"\n1 \"(entrada estdar)\"\n2 \"no se puede leer el fichero comprimido bzip2\"\n3 \"opci desconocid"..., file = 0x801427040 "usr.bin/grep/nls/es_ES.ISO8859-1.msg", line_no = 1} s = 32768 c = 0 t = 8 #6 0x00000000004044d7 in grep_tree (argv=0x7fffffffdd30) at /usr/src/usr.bin/grep/util.c:163 fts = (FTS *) 0x80141b300 p = (FTSENT *) 0x801424240 d = 0x7fffffffdc10 "Àÿÿ\177" dir = 0x0 c = 0 fts_flags = 14 ok = true #7 0x0000000000403ea9 in main (argc=5, argv=0x7fffffffdd10) at /usr/src/usr.bin/grep/grep.c:689 aargv = (char **) 0x7fffffffdd30 eargv = (char **) 0x80060eda0 eopts = 0x0 ep = 0x7fffffffdcc0 "ÿÿÿ\177" l = 34378972320 aargc = 1 eargc = 0 i = 1 c = -1 lastc = 114 needpattern = 1 newarg = 1 prevoptind = 3 -- no local bsdgrep changes