APPS: Prevent ASAN hickup on idempotent strncpy() in opt_progname()
authorDr. David von Oheimb <David.von.Oheimb@siemens.com>
Wed, 21 Apr 2021 11:51:03 +0000 (13:51 +0200)
committerDr. David von Oheimb <dev@ddvo.net>
Sat, 24 Apr 2021 16:54:32 +0000 (18:54 +0200)
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/14970)

apps/lib/opt.c

index d22a884e6715bd6fa61e033aab5cf099f5a148fb..8073a7014143b2433d83f7c2a3c9da9a6a6363be 100644 (file)
@@ -105,7 +105,8 @@ char *opt_progname(const char *argv0)
     /* Find last special character sys:[foo.bar]openssl */
     p = opt_path_end(argv0);
     q = strrchr(p, '.');
-    strncpy(prog, p, sizeof(prog) - 1);
+    if (prog != p)
+        strncpy(prog, p, sizeof(prog) - 1);
     prog[sizeof(prog) - 1] = '\0';
     if (q != NULL && q - p < sizeof(prog))
         prog[q - p] = '\0';
@@ -132,7 +133,8 @@ char *opt_progname(const char *argv0)
     const char *p;
 
     p = opt_path_end(argv0);
-    strncpy(prog, p, sizeof(prog) - 1);
+    if (prog != p)
+        strncpy(prog, p, sizeof(prog) - 1);
     prog[sizeof(prog) - 1] = '\0';
     return prog;
 }