mirror of
git://git.musl-libc.org/musl
synced 2025-03-06 20:48:29 +01:00
mntent: fix potential mishandling of extremely long lines
commit 05973dc3bb
made it so that lines
longer than INT_MAX can in theory be read, but did not use a suitable
type for the positions determined by sscanf. we could change to using
size_t, but since the signature for getmntent_r does not admit lines
longer than INT_MAX, it does not make sense to support them in the
legacy thread-unsafe form either -- the principle here is that there
should not be an incentive to use the unsafe function to get added
functionality.
This commit is contained in:
parent
751bee0ee7
commit
8974ef2124
1 changed files with 2 additions and 0 deletions
|
@ -2,6 +2,7 @@
|
|||
#include <string.h>
|
||||
#include <mntent.h>
|
||||
#include <errno.h>
|
||||
#include <limits.h>
|
||||
|
||||
static char *internal_buf;
|
||||
static size_t internal_bufsize;
|
||||
|
@ -42,6 +43,7 @@ struct mntent *getmntent_r(FILE *f, struct mntent *mnt, char *linebuf, int bufle
|
|||
}
|
||||
|
||||
len = strlen(linebuf);
|
||||
if (len > INT_MAX) continue;
|
||||
for (i = 0; i < sizeof n / sizeof *n; i++) n[i] = len;
|
||||
sscanf(linebuf, " %n%*s%n %n%*s%n %n%*s%n %n%*s%n %d %d",
|
||||
n, n+1, n+2, n+3, n+4, n+5, n+6, n+7,
|
||||
|
|
Loading…
Add table
Reference in a new issue