[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#1066261: lintian: FTBFS: hello.c:9:5: error: implicit declaration of function 'strcpy' [-Werror=implicit-function-declaration]



Control: tag -1 patch

On Wed, Mar 13, 2024 at 12:42:03PM +0100, Lucas Nussbaum wrote:
> During a rebuild of all packages in sid, your package failed to build
> on amd64.
> 
> This is most likely caused by a change in dpkg 1.22.6, that enabled
> -Werror=implicit-function-declaration. For more information, see
> https://wiki.debian.org/qa.debian.org/FTBFS#A2024-03-13_-Werror.3Dimplicit-function-declaration
> 
> Relevant part (hopefully):
> > cc -o strong \
> > 	-Wdate-time -D_FORTIFY_SOURCE=2 \
> > 	-g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/<<PKGBUILDDIR>>/debian/test-out/packages/checks/binaries/hardening/binaries-hardening/binaries-hardening-1.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection \
> > 	-Wl,-z,relro -Wl,-z,now \
> > 	hello.c
> > hello.c: In function 'report':
> > hello.c:9:5: error: implicit declaration of function 'strcpy' [-Werror=implicit-function-declaration]
> >     9 |     strcpy(buf, string);
> >       |     ^~~~~~
> > hello.c:2:1: note: include '<string.h>' or provide a declaration of 'strcpy'
> >     1 | #include <stdio.h>
> >   +++ |+#include <string.h>
> >     2 | 
> > hello.c:9:5: warning: incompatible implicit declaration of built-in function 'strcpy' [-Wbuiltin-declaration-mismatch]
> >     9 |     strcpy(buf, string);
> >       |     ^~~~~~
> > hello.c:9:5: note: include '<string.h>' or provide a declaration of 'strcpy'
> > cc1: some warnings being treated as errors
> > make[2]: *** [Makefile:11: all] Error 1

Attached patch fixes these issues.  This is also available as MR!496 on
Salsa.

Cheers,
-- 
James
GPG Key: 4096R/91BF BF4D 6956 BD5D F7B7  2D23 DFE6 91AE 331B A3DB
>From 53dc310d4d5af6b0701d55577b30fb9a7e493bd1 Mon Sep 17 00:00:00 2001
From: James McCoy <jamessan@debian.org>
Date: Fri, 15 Mar 2024 12:31:42 -0400
Subject: [PATCH] t: Fix compilation failures with dpkg 1.22.6

Dpkg 1.22.6 enables -Werror=implicit-function-declaration by default.
This causes various compilation failures in the tests, mainly due to
missing includes.

The remaining failures are due to newer GCC versions defaulting to the
C11 standard, which doesn't expose the gets() function anymore.  For
these tests, explicitly compile with -std=c99 to re-expose the function.

Closes: #1066261
Signed-off-by: James McCoy <jamessan@debian.org>
---
 .../hardening/binaries-hardening/build-spec/orig/hello.c       | 1 +
 .../binaries/static/binaries-golang/build-spec/orig/Makefile   | 2 +-
 .../build-spec/orig/Makefile                                   | 2 +-
 .../control-file-golang-built-using/build-spec/orig/Makefile   | 2 +-
 .../built-using/binaries-golang/build-spec/orig/Makefile       | 2 +-
 .../import-path/binaries-golang/build-spec/orig/Makefile       | 2 +-
 .../control-file-golang-built-using/build-spec/orig/Makefile   | 2 +-
 .../build-spec/orig/Makefile                                   | 2 +-
 .../binaries-embedded-libs/build-spec/orig/hardening-trigger.h | 3 +++
 9 files changed, 11 insertions(+), 7 deletions(-)

diff --git a/t/recipes/checks/binaries/hardening/binaries-hardening/build-spec/orig/hello.c b/t/recipes/checks/binaries/hardening/binaries-hardening/build-spec/orig/hello.c
index 7b87bd737..0ee9099e1 100644
--- a/t/recipes/checks/binaries/hardening/binaries-hardening/build-spec/orig/hello.c
+++ b/t/recipes/checks/binaries/hardening/binaries-hardening/build-spec/orig/hello.c
@@ -1,4 +1,5 @@
 #include <stdio.h>
+#include <string.h>
 
 void
 report(char *string)
diff --git a/t/recipes/checks/binaries/static/binaries-golang/build-spec/orig/Makefile b/t/recipes/checks/binaries/static/binaries-golang/build-spec/orig/Makefile
index f04b342de..66c9d6f3a 100644
--- a/t/recipes/checks/binaries/static/binaries-golang/build-spec/orig/Makefile
+++ b/t/recipes/checks/binaries/static/binaries-golang/build-spec/orig/Makefile
@@ -4,7 +4,7 @@ COMPILE:= $(CC) $(NOPIE_CFLAGS) $(CPPFLAGS) $(NOPIE_LDFLAGS)
 
 all:
 	# static version
-	$(COMPILE) -static -o basic.static basic.c
+	$(COMPILE) -std=c99 -static -o basic.static basic.c
 
 install:
 	install -d $(DESTDIR)/usr/lib/foo/
diff --git a/t/recipes/checks/debian/control/field/adopted/control-file-golang-xs-go-import-path/build-spec/orig/Makefile b/t/recipes/checks/debian/control/field/adopted/control-file-golang-xs-go-import-path/build-spec/orig/Makefile
index 6047afb59..900ebadbe 100644
--- a/t/recipes/checks/debian/control/field/adopted/control-file-golang-xs-go-import-path/build-spec/orig/Makefile
+++ b/t/recipes/checks/debian/control/field/adopted/control-file-golang-xs-go-import-path/build-spec/orig/Makefile
@@ -4,7 +4,7 @@ COMPILE:= $(CC) $(NOPIE_CFLAGS) $(CPPFLAGS) $(NOPIE_LDFLAGS)
 
 all:
 	# static version
-	$(COMPILE) -static -o static basic.c
+	$(COMPILE) -std=c99 -static -o static basic.c
 
 clean distclean:
 	rm -f basic
diff --git a/t/recipes/checks/debian/control/field/built-using/control-file-golang-built-using/build-spec/orig/Makefile b/t/recipes/checks/debian/control/field/built-using/control-file-golang-built-using/build-spec/orig/Makefile
index 6047afb59..900ebadbe 100644
--- a/t/recipes/checks/debian/control/field/built-using/control-file-golang-built-using/build-spec/orig/Makefile
+++ b/t/recipes/checks/debian/control/field/built-using/control-file-golang-built-using/build-spec/orig/Makefile
@@ -4,7 +4,7 @@ COMPILE:= $(CC) $(NOPIE_CFLAGS) $(CPPFLAGS) $(NOPIE_LDFLAGS)
 
 all:
 	# static version
-	$(COMPILE) -static -o static basic.c
+	$(COMPILE) -std=c99 -static -o static basic.c
 
 clean distclean:
 	rm -f basic
diff --git a/t/recipes/checks/languages/golang/built-using/binaries-golang/build-spec/orig/Makefile b/t/recipes/checks/languages/golang/built-using/binaries-golang/build-spec/orig/Makefile
index f04b342de..66c9d6f3a 100644
--- a/t/recipes/checks/languages/golang/built-using/binaries-golang/build-spec/orig/Makefile
+++ b/t/recipes/checks/languages/golang/built-using/binaries-golang/build-spec/orig/Makefile
@@ -4,7 +4,7 @@ COMPILE:= $(CC) $(NOPIE_CFLAGS) $(CPPFLAGS) $(NOPIE_LDFLAGS)
 
 all:
 	# static version
-	$(COMPILE) -static -o basic.static basic.c
+	$(COMPILE) -std=c99 -static -o basic.static basic.c
 
 install:
 	install -d $(DESTDIR)/usr/lib/foo/
diff --git a/t/recipes/checks/languages/golang/import-path/binaries-golang/build-spec/orig/Makefile b/t/recipes/checks/languages/golang/import-path/binaries-golang/build-spec/orig/Makefile
index f04b342de..66c9d6f3a 100644
--- a/t/recipes/checks/languages/golang/import-path/binaries-golang/build-spec/orig/Makefile
+++ b/t/recipes/checks/languages/golang/import-path/binaries-golang/build-spec/orig/Makefile
@@ -4,7 +4,7 @@ COMPILE:= $(CC) $(NOPIE_CFLAGS) $(CPPFLAGS) $(NOPIE_LDFLAGS)
 
 all:
 	# static version
-	$(COMPILE) -static -o basic.static basic.c
+	$(COMPILE) -std=c99 -static -o basic.static basic.c
 
 install:
 	install -d $(DESTDIR)/usr/lib/foo/
diff --git a/t/recipes/checks/languages/golang/import-path/control-file-golang-built-using/build-spec/orig/Makefile b/t/recipes/checks/languages/golang/import-path/control-file-golang-built-using/build-spec/orig/Makefile
index 6047afb59..900ebadbe 100644
--- a/t/recipes/checks/languages/golang/import-path/control-file-golang-built-using/build-spec/orig/Makefile
+++ b/t/recipes/checks/languages/golang/import-path/control-file-golang-built-using/build-spec/orig/Makefile
@@ -4,7 +4,7 @@ COMPILE:= $(CC) $(NOPIE_CFLAGS) $(CPPFLAGS) $(NOPIE_LDFLAGS)
 
 all:
 	# static version
-	$(COMPILE) -static -o static basic.c
+	$(COMPILE) -std=c99 -static -o static basic.c
 
 clean distclean:
 	rm -f basic
diff --git a/t/recipes/checks/languages/golang/import-path/control-file-golang-xs-go-import-path/build-spec/orig/Makefile b/t/recipes/checks/languages/golang/import-path/control-file-golang-xs-go-import-path/build-spec/orig/Makefile
index 6047afb59..900ebadbe 100644
--- a/t/recipes/checks/languages/golang/import-path/control-file-golang-xs-go-import-path/build-spec/orig/Makefile
+++ b/t/recipes/checks/languages/golang/import-path/control-file-golang-xs-go-import-path/build-spec/orig/Makefile
@@ -4,7 +4,7 @@ COMPILE:= $(CC) $(NOPIE_CFLAGS) $(CPPFLAGS) $(NOPIE_LDFLAGS)
 
 all:
 	# static version
-	$(COMPILE) -static -o static basic.c
+	$(COMPILE) -std=c99 -static -o static basic.c
 
 clean distclean:
 	rm -f basic
diff --git a/t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/hardening-trigger.h b/t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/hardening-trigger.h
index 0bfe592ba..931eea933 100644
--- a/t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/hardening-trigger.h
+++ b/t/recipes/checks/libraries/embedded/binaries-embedded-libs/build-spec/orig/hardening-trigger.h
@@ -1,3 +1,6 @@
+#include <stdio.h>
+#include <string.h>
+
 void e(char *p, int i, void (*f)(char *)){
   char test[10];
   memcpy(test, p, i);
-- 
2.43.0


Reply to: