1
0
mirror of git://git.sv.gnu.org/coreutils.git synced 2026-04-21 03:12:48 +02:00

(mode_compile): Don't decrement a pointer that

points to the start of a string, as the C Standard says the
resulting behavior is undefined.
This commit is contained in:
Paul Eggert
2004-09-24 07:00:59 +00:00
parent ed37158ead
commit d7caebfe16

View File

@@ -211,10 +211,9 @@ mode_compile (const char *mode_string, unsigned int masked_ops)
umask_value = umask (0);
umask (umask_value); /* Restore the old value. */
--mode_string;
/* One loop iteration for each "ugoa...=+-rwxXstugo...[=+-rwxXstugo...]". */
do
for (;; mode_string++)
{
/* Which bits in the mode are operated on. */
mode_t affected_bits = 0;
@@ -226,7 +225,7 @@ mode_compile (const char *mode_string, unsigned int masked_ops)
bool who_specified_p;
/* Turn on all the bits in `affected_bits' for each group given. */
for (++mode_string;; ++mode_string)
for (;; mode_string++)
switch (*mode_string)
{
case 'u':
@@ -349,7 +348,11 @@ mode_compile (const char *mode_string, unsigned int masked_ops)
}
no_more_values:;
}
} while (*mode_string == ',');
if (*mode_string != ',')
break;
}
if (*mode_string == 0)
return head;
invalid: