idmapd: Fix decoding of octal encoded fields
authorJan-Marek Glogowski <glogow@fbihome.de>
Tue, 20 Sep 2011 18:33:22 +0000 (14:33 -0400)
committerSteve Dickson <steved@redhat.com>
Tue, 20 Sep 2011 18:34:42 +0000 (14:34 -0400)
The decoded octal will always be positive and (char) -1 is negative. Any
field containing an encoded octal will be rejected.

As the encoded value should be an unsigned char, fix the check to reject
all values > (unsigned char) -1 = UCHAR_MAX, as this indicate an error
in the encoding.

Signed-off-by: Jan-Marek Glogowski <glogow@fbihome.de>
Signed-off-by: Steve Dickson <steved@redhat.com>
utils/idmapd/idmapd.c

index 76a56ef..19d9114 100644 (file)
@@ -925,9 +925,9 @@ getfield(char **bpp, char *fld, size_t fldsz)
                if (*bp == '\\') {
                        if ((n = sscanf(bp, "\\%03o", &val)) != 1)
                                return (-1);
-                       if (val > (char)-1)
+                       if (val > UCHAR_MAX)
                                return (-1);
-                       *fld++ = (char)val;
+                       *fld++ = val;
                        bp += 4;
                } else {
                        *fld++ = *bp;