apps: when the 'compat' nameopt has been set, leave it be
authorRichard Levitte <levitte@openssl.org>
Thu, 31 May 2018 04:51:25 +0000 (06:51 +0200)
committerRichard Levitte <levitte@openssl.org>
Thu, 31 May 2018 09:02:21 +0000 (11:02 +0200)
XN_FLAG_COMPAT has a unique property, its zero for value.  This means
it needs special treatment; if it has been set (which can only be
determined indirectly) and set alone (*), no other flags should be
set.

(*) if any other nameopt flag has been set by the user, compatibility
mode is blown away.

Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/6382)

(cherry picked from commit 3190d1dca43ecfd748c06aa06752de06af3768b9)

apps/apps.c

index c5a5152295569e59638d5c1e3c35ae87f09a0b0a..07ffad1d0ba734949496774eeeae2884adc6eb1d 100644 (file)
@@ -1359,7 +1359,8 @@ int set_name_ex(unsigned long *flags, const char *arg)
     };
     if (set_multi_opts(flags, arg, ex_tbl) == 0)
         return 0;
-    if ((*flags & XN_FLAG_SEP_MASK) == 0)
+    if (*flags != XN_FLAG_COMPAT
+        && (*flags & XN_FLAG_SEP_MASK) == 0)
         *flags |= XN_FLAG_SEP_CPLUS_SPC;
     return 1;
 }