diff options
Diffstat (limited to 'main/musl/0018-use-dynamic-buffer-for-getmntent.patch')
-rw-r--r-- | main/musl/0018-use-dynamic-buffer-for-getmntent.patch | 67 |
1 files changed, 0 insertions, 67 deletions
diff --git a/main/musl/0018-use-dynamic-buffer-for-getmntent.patch b/main/musl/0018-use-dynamic-buffer-for-getmntent.patch deleted file mode 100644 index 7178a00a4a..0000000000 --- a/main/musl/0018-use-dynamic-buffer-for-getmntent.patch +++ /dev/null @@ -1,67 +0,0 @@ -From 05973dc3bbc1aca9b3c8347de6879ed72147ab3b Mon Sep 17 00:00:00 2001 -From: Natanael Copa <ncopa@alpinelinux.org> -Date: Thu, 8 Sep 2016 19:07:31 +0200 -Subject: [PATCH 18/18] use dynamic buffer for getmntent - -overlayfs may have fairly long lines so we use getline to allocate a -buffer dynamically. The buffer will be allocated on first use, expand as -needed, but will never be free'ed. - -Downstream bug: http://bugs.alpinelinux.org/issues/5703 - -Signed-off-by: Natanael Copa <ncopa@alpinelinux.org> ---- - src/misc/mntent.c | 17 +++++++++++++---- - 1 file changed, 13 insertions(+), 4 deletions(-) - -diff --git a/src/misc/mntent.c b/src/misc/mntent.c -index a16d652..eabb820 100644 ---- a/src/misc/mntent.c -+++ b/src/misc/mntent.c -@@ -3,6 +3,11 @@ - #include <mntent.h> - #include <errno.h> - -+static char *internal_buf; -+static size_t internal_bufsize; -+ -+#define SENTINEL (char *)&internal_buf -+ - FILE *setmntent(const char *name, const char *mode) - { - return fopen(name, mode); -@@ -16,13 +21,18 @@ int endmntent(FILE *f) - - struct mntent *getmntent_r(FILE *f, struct mntent *mnt, char *linebuf, int buflen) - { -- int cnt, n[8]; -+ int cnt, n[8], use_internal = (linebuf == SENTINEL); - - mnt->mnt_freq = 0; - mnt->mnt_passno = 0; - - do { -- fgets(linebuf, buflen, f); -+ if (use_internal) { -+ getline(&internal_buf, &internal_bufsize, f); -+ linebuf = internal_buf; -+ } else { -+ fgets(linebuf, buflen, f); -+ } - if (feof(f) || ferror(f)) return 0; - if (!strchr(linebuf, '\n')) { - fscanf(f, "%*[^\n]%*[\n]"); -@@ -49,9 +59,8 @@ struct mntent *getmntent_r(FILE *f, struct mntent *mnt, char *linebuf, int bufle - - struct mntent *getmntent(FILE *f) - { -- static char linebuf[256]; - static struct mntent mnt; -- return getmntent_r(f, &mnt, linebuf, sizeof linebuf); -+ return getmntent_r(f, &mnt, SENTINEL, 0); - } - - int addmntent(FILE *f, const struct mntent *mnt) --- -2.10.1 - |