Date: Fri, 24 Aug 2007 01:09:35 +0200 From: Marcin Wisnicki <mwisnicki+freebsd@gmail.com> To: FreeBSD-gnats-submit@freebsd.org Cc: gnome@FreeBSD.org Subject: [PATCH] sysutils/gnome-volume-manager: inifite loop on startup Message-ID: <46ce13b2.08b7660a.4c6c.ffffeae7@mx.google.com>
next in thread | raw e-mail | index | archive | help
>Submitter-Id: current-users >Originator: Marcin Wisnicki >Organization: >Confidential: no >Synopsis: [PATCH] sysutils/gnome-volume-manager: inifite loop on startup >Severity: non-critical >Priority: low >Category: ports >Class: change-request >Release: FreeBSD 6.2-STABLE i386 >Environment: System: FreeBSD ghost.pnet.one.pl 6.2-STABLE FreeBSD 6.2-STABLE #8: Tue Aug 7 15:03:32 CEST >Description: Integer underflow will cause "while (!local && --len >= 0)" to be always true if no local entry was found in the loop. I have also changed wtmp to utmp as we are looking for current users. With this patch g-v-m no longer hangs in my Xvnc-based jail. Port maintainer (gnome@FreeBSD.org) is cc'd. Generated with FreeBSD Port Tools 0.77 >How-To-Repeat: >Fix: --- gnome-volume-manager-2.17.0_5.patch begins here --- diff -ruN --exclude=CVS /usr/ports/sysutils/gnome-volume-manager.orig/Makefile /usr/ports/sysutils/gnome-volume-manager/Makefile --- /usr/ports/sysutils/gnome-volume-manager.orig/Makefile 2007-05-28 01:14:14.000000000 +0200 +++ /usr/ports/sysutils/gnome-volume-manager/Makefile 2007-08-24 00:23:44.000000000 +0200 @@ -8,7 +8,7 @@ PORTNAME= gnome-volume-manager PORTVERSION= 2.17.0 -PORTREVISION= 4 +PORTREVISION= 5 CATEGORIES= sysutils gnome MASTER_SITES= ${MASTER_SITE_GNOME} MASTER_SITE_SUBDIR= sources/${PORTNAME}/${PORTVERSION:R} diff -ruN --exclude=CVS /usr/ports/sysutils/gnome-volume-manager.orig/files/patch-src_manager.c /usr/ports/sysutils/gnome-volume-manager/files/patch-src_manager.c --- /usr/ports/sysutils/gnome-volume-manager.orig/files/patch-src_manager.c 2007-03-25 05:05:54.000000000 +0200 +++ /usr/ports/sysutils/gnome-volume-manager/files/patch-src_manager.c 2007-08-24 00:23:26.000000000 +0200 @@ -205,14 +205,14 @@ endutent (); } +#else -+ if ((fd = open (_PATH_WTMP, O_RDONLY, 0)) < 0 || fstat(fd, &sb) == -1) { ++ if ((fd = open (_PATH_UTMP, O_RDONLY, 0)) < 0 || fstat(fd, &sb) == -1) { + close (fd); + return TRUE; + } + + len = (sb.st_size + sizeof(buf) - 1) / sizeof(buf); + -+ while (!local && --len >= 0) { ++ while (!local && len-- > 0) { + if (lseek(fd, (off_t) (len * sizeof(buf)), L_SET) == -1 || + (bytes = read (fd, buf, sizeof(buf))) == -1) { + close (fd); --- gnome-volume-manager-2.17.0_5.patch ends here ---
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?46ce13b2.08b7660a.4c6c.ffffeae7>