garbage is allowed in the f[re]open mode string
This commit is contained in:
parent
6ab26e5cdc
commit
470bb82342
2 changed files with 10 additions and 6 deletions
|
@ -73,14 +73,16 @@ fopen(const char *name, const char *mode)
|
||||||
while (*mode) {
|
while (*mode) {
|
||||||
switch(*mode++) {
|
switch(*mode++) {
|
||||||
case 'b':
|
case 'b':
|
||||||
break;
|
continue;
|
||||||
case '+':
|
case '+':
|
||||||
rwmode = O_RDWR;
|
rwmode = O_RDWR;
|
||||||
flags |= _IOREAD | _IOWRITE;
|
flags |= _IOREAD | _IOWRITE;
|
||||||
break;
|
continue;
|
||||||
|
/* The sequence may be followed by additional characters */
|
||||||
default:
|
default:
|
||||||
return (FILE *)NULL;
|
break;
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Perform a creat() when the file should be truncated or when
|
/* Perform a creat() when the file should be truncated or when
|
||||||
|
|
|
@ -56,14 +56,16 @@ freopen(const char *name, const char *mode, FILE *stream)
|
||||||
while (*mode) {
|
while (*mode) {
|
||||||
switch(*mode++) {
|
switch(*mode++) {
|
||||||
case 'b':
|
case 'b':
|
||||||
break;
|
continue;
|
||||||
case '+':
|
case '+':
|
||||||
rwmode = O_RDWR;
|
rwmode = O_RDWR;
|
||||||
flags |= _IOREAD | _IOWRITE;
|
flags |= _IOREAD | _IOWRITE;
|
||||||
break;
|
continue;
|
||||||
|
/* The sequence may be followed by aditional characters */
|
||||||
default:
|
default:
|
||||||
return (FILE *)NULL;
|
break;
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((rwflags & O_TRUNC)
|
if ((rwflags & O_TRUNC)
|
||||||
|
|
Loading…
Reference in a new issue