SOURCES: bsd-finger-iconv.patch - strtok sucks

baggins baggins at pld-linux.org
Sat Oct 4 00:49:05 CEST 2008


Author: baggins                      Date: Fri Oct  3 22:49:05 2008 GMT
Module: SOURCES                       Tag: HEAD
---- Log message:
- strtok sucks

---- Files affected:
SOURCES:
   bsd-finger-iconv.patch (1.1 -> 1.2) 

---- Diffs:

================================================================
Index: SOURCES/bsd-finger-iconv.patch
diff -u SOURCES/bsd-finger-iconv.patch:1.1 SOURCES/bsd-finger-iconv.patch:1.2
--- SOURCES/bsd-finger-iconv.patch:1.1	Fri Oct  3 23:23:51 2008
+++ SOURCES/bsd-finger-iconv.patch	Sat Oct  4 00:48:59 2008
@@ -1,6 +1,6 @@
 diff -ur bsd-finger-0.17/finger/util.c bsd-finger-0.17-iconv/finger/util.c
---- bsd-finger-0.17/finger/util.c	2008-10-03 23:13:12.000000000 +0200
-+++ bsd-finger-0.17-iconv/finger/util.c	2008-10-03 23:11:21.000000000 +0200
+--- bsd-finger-0.17/finger/util.c	2008-10-04 00:48:15.000000000 +0200
++++ bsd-finger-0.17-iconv/finger/util.c	2008-10-04 00:47:47.000000000 +0200
 @@ -53,6 +53,14 @@
  #include <stdlib.h>
  #include "finger.h"
@@ -16,23 +16,40 @@
  #define	HBITS	8			/* number of bits in hash code */
  #define	HSIZE	(1 << 8)		/* hash table size */
  #define	HMASK	(HSIZE - 1)		/* hash code mask */
-@@ -227,6 +235,54 @@
+@@ -183,7 +191,7 @@
+ {
+ 	char *p;
+ 	int i, j, ct, rv=0;
+-	char *rname;
++	char *rname, *irname = NULL;
+ 
+ 	strncpy(tbuf, pw->pw_gecos, TBUFLEN);
+ 	tbuf[TBUFLEN-1] = 0;  /* guarantee null termination */
+@@ -222,11 +230,62 @@
+ 	    }
+ 	}
+ 	rname[j] = 0;
++#if defined(HAVE_LANGINFO_H) && defined(HAVE_ICONV)
++	irname = malloc(2*strlen(rname) + 1);
++	if (irname)
++		strcpy(irname, rname);
++#endif
+ 
+ 	for (p = strtok(rname, "\t "); p && !rv; p = strtok(NULL, "\t ")) {
  	    if (!strcasecmp(p, user)) 
  		rv = 1;
  	}
 +
 +#if defined(HAVE_LANGINFO_H) && defined(HAVE_ICONV)
-+	if (!rv && has_locale) {
-+		char *irname, *iuser, *inbuf, *outbuf;
++	if (!rv && has_locale && irname) {
++		char *iuser, *inbuf, *outbuf;
 +		iconv_t cd;
 +		size_t il, ol;
 +
-+		irname = malloc(2*strlen(rname) + 1);
-+		if (!irname)
-+			goto done;
 +		iuser = malloc(2*strlen(user) + 1);
 +		if (!iuser)
-+			goto done_rname;
++			goto done;
++		strcpy(rname, irname);
 +		memset(iuser, 0, 2*strlen(user) + 1);
 +		memset(irname, 0, 2*strlen(rname) + 1);
 +
@@ -63,10 +80,10 @@
 +		iconv_close(cd);
 +done_user:
 +		free(iuser);
-+done_rname:
-+		free(irname);
 +	}
 +done:
++	if (irname)
++		free(irname);
 +#endif
  	free(rname);
  
================================================================

---- CVS-web:
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/SOURCES/bsd-finger-iconv.patch?r1=1.1&r2=1.2&f=u



More information about the pld-cvs-commit mailing list