The getpass function is not available on all systems; and not
necessarily declared in unistd.h, as expected by the sensitive-1
analyzer test.
Since this is a compile-only test, it doesn't really matter if the
function is defined in the system libraries. All we need is a
declaration, to avoid warnings from calling an undeclared function.
This patch adds the declaration, in a way that is most unlikely to
conflict with any existing declaration.
Regstrapped on x86_64-linux-gnu, also tested on arm-vxworks7r2.
Ok to install?
for gcc/testsuite/ChangeLog
* gcc.dg/analyzer/sensitive-1.c: Declare getpass.
---
gcc/testsuite/gcc.dg/analyzer/sensitive-1.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/gcc/testsuite/gcc.dg/analyzer/sensitive-1.c
b/gcc/testsuite/gcc.dg/analyzer/sensitive-1.c
index 81144af620edf..c66af9276174f 100644
--- a/gcc/testsuite/gcc.dg/analyzer/sensitive-1.c
+++ b/gcc/testsuite/gcc.dg/analyzer/sensitive-1.c
@@ -6,6 +6,11 @@
#include <string.h>
+/* Declare getpass, in case unistd doesn't declare it.
+ Parenthesize it, in case it's a macro.
+ Don't use a prototype, to avoid const mismatches. */
+extern char *(getpass) ();
+
char test_1 (FILE *logfile)
{
char *password = getpass (">"); /* { dg-message "\\(1\\) sensitive value
acquired here" } */
--
Alexandre Oliva, happy hacker https://FSFLA.org/blogs/lxo/
Free Software Activist GNU Toolchain Engineer
Vim, Vi, Voltei pro Emacs -- GNUlius Caesar