Author: jilles
Date: Sun Aug 31 20:34:06 2014
New Revision: 270890
URL: http://svnweb.freebsd.org/changeset/base/270890

Log:
  MFC r256800: pathchk: Ensure bytes >= 128 are considered non-portable
  characters.
  
  This was not broken on architectures such as ARM where char is unsigned.
  
  Also, remove the first non-portable character from the output. POSIX does
  not require this, and printing the first byte may yield an invalid byte
  sequence with UTF-8.
  
  PR:           165988
  Reported by:  Nicolas Rachinsky
  Relnotes:     yes

Modified:
  stable/10/usr.bin/pathchk/pathchk.c
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/usr.bin/pathchk/pathchk.c
==============================================================================
--- stable/10/usr.bin/pathchk/pathchk.c Sun Aug 31 20:23:56 2014        
(r270889)
+++ stable/10/usr.bin/pathchk/pathchk.c Sun Aug 31 20:34:06 2014        
(r270890)
@@ -98,7 +98,7 @@ check(const char *path)
 {
        struct stat sb;
        long complen, namemax, pathmax, svnamemax;
-       int badch, last;
+       int last;
        char *end, *p, *pathd;
 
        if ((pathd = strdup(path)) == NULL)
@@ -142,9 +142,9 @@ check(const char *path)
                        goto bad;
                }
 
-               if (pflag && (badch = portable(p)) >= 0) {
+               if (pflag && !portable(p)) {
                        warnx("%s: %s: component contains non-portable "
-                           "character `%c'", path, p, badch);
+                           "character", path, p);
                        goto bad;
                }
 
@@ -183,8 +183,7 @@ bad:        free(pathd);
 }
 
 /*
- * Check whether a path component contains only portable characters. Return
- * the first non-portable character found.
+ * Check whether a path component contains only portable characters.
  */
 static int
 portable(const char *path)
@@ -197,7 +196,7 @@ portable(const char *path)
 
        s = strspn(path, charset);
        if (path[s] != '\0')
-               return (path[s]);
+               return (0);
 
-       return (-1);
+       return (1);
 }
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to