From 6f8ab4de470fa0bc6a2932a20795fb9ff1d8241e Mon Sep 17 00:00:00 2001 From: Karel Zak Date: Fri, 15 Oct 2010 15:51:25 +0200 Subject: [PATCH] libmount: fix mnt_optstr_apply_flags() to work with optional variables Signed-off-by: Karel Zak --- shlibs/mount/src/optstr.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/shlibs/mount/src/optstr.c b/shlibs/mount/src/optstr.c index 84ce0489..5e544658 100644 --- a/shlibs/mount/src/optstr.c +++ b/shlibs/mount/src/optstr.c @@ -630,7 +630,7 @@ int mnt_optstr_apply_flags(char **optstr, unsigned long flags, fl = flags; /* - * There is convetion that 'rw/ro' flags is always at the begin of + * There is a convetion that 'rw/ro' flags is always at the begin of * the string (athough the 'rw' is unnecessary). */ if (map == mnt_get_builtin_optmap(MNT_LINUX_MAP)) { @@ -696,11 +696,12 @@ int mnt_optstr_apply_flags(char **optstr, unsigned long flags, /* don't add options which require values (e.g. offset=%d) */ p = strchr(ent->name, '='); - if (p && p > ent->name && *(p - 1) != '[') - continue; - - /* prepare name for value with optional value (e.g. loop[=%s]) */ if (p) { + if (*(p - 1) == '[') + p--; /* name[=%s] */ + else + continue; /* name=%s */ + p = strndup(ent->name, p - ent->name); if (!p) { rc = -ENOMEM; -- 2.39.5