mirror of
git://git.musl-libc.org/musl
synced 2025-03-06 20:48:29 +01:00
hasmntopt: match only whole options not arbitrary substrings
the man page for this nonstandardized function has historically documented it as scanning for a substring; however, this is functionally incorrect (matches the substring "atime" in the "noatime" option, for example) and differs from other existing implementations. with the change made here, it should match glibc and other implementations, only matching whole options delimited by commas or separated from a value by an equals sign.
This commit is contained in:
parent
e5adcd97b5
commit
4c4f15dae5
1 changed files with 9 additions and 1 deletions
|
@ -115,5 +115,13 @@ int addmntent(FILE *f, const struct mntent *mnt)
|
|||
|
||||
char *hasmntopt(const struct mntent *mnt, const char *opt)
|
||||
{
|
||||
return strstr(mnt->mnt_opts, opt);
|
||||
size_t l = strlen(opt);
|
||||
char *p = mnt->mnt_opts;
|
||||
for (;;) {
|
||||
if (!strncmp(p, opt, l) && (!p[l] || p[l]==',' || p[l]=='='))
|
||||
return p;
|
||||
p = strchr(p, ',');
|
||||
if (!p) return 0;
|
||||
p++;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue