aboutsummaryrefslogtreecommitdiffstats
path: root/main/musl/0018-use-dynamic-buffer-for-getmntent.patch
diff options
context:
space:
mode:
Diffstat (limited to 'main/musl/0018-use-dynamic-buffer-for-getmntent.patch')
-rw-r--r--main/musl/0018-use-dynamic-buffer-for-getmntent.patch67
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
-