|
Message-ID: <CAGMVOdtX2pw9CeOEmgcqv65zX8q5bC+K5tA8XtHS2X9Zr5wkUA@mail.gmail.com> Date: Fri, 13 May 2022 22:39:17 +0100 From: Oliver Ford <ojford@...il.com> To: Rich Felker <dalias@...c.org> Cc: musl@...ts.openwall.com Subject: Re: [PATCH musl v2 3/3] mntent: fix parsing lines with optional fields On Thu, May 12, 2022 at 10:10 PM Rich Felker <dalias@...c.org> wrote: > This fails to check that the match is at the start of an option > (preceded by a ',' or at the beginning of string) and fails to > continue if the first match is a false positive (e.g. "ro" in > "symlinkroot,ro"). It's possible to solve this still using strstr in a > loop, but it might be easier to just iterate delimiters and strcmp. > > Also, I'm not sure if hasmntopt is supposed to return a match or not > for something like "uid" in "uid=1001"; if so, being followed by '=' > also needs to be considered valid match. > > Rich Comparing glibc and bionic, they both match when followed by an '='. So the below function handles that, and replaces strstr with an strncmp and a loop. If this version is ok I'll submit a patch? char *hasmntopt(const struct mntent *mnt, const char *opt) { char *ptr = mnt->mnt_opts; size_t len = strlen(opt); while (ptr) { char *end = ptr + len; if (!strncmp(ptr, opt, len) && (*end == '\0' || *end == ',' || *end == '=')) return ptr; ptr = strchr(ptr, ','); if (ptr) ptr++; } return NULL; }
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.