summaryrefslogtreecommitdiff
path: root/debian/patches/0033-Build-mantohtml-with-the-build-architecture-compiler.patch
blob: b396c05cee05d86f066a626cddde3a18b1fc6da1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
From 8170a208349485cff63d4406e7b0699c2b14c5ce Mon Sep 17 00:00:00 2001
From: Helmut Grohne <helmut@subdivi.de>
Date: Tue, 9 Aug 2016 18:11:49 +0200
Subject: Build mantohtml with the build architecture compiler

mantohtml is run during build. Thus it needs to be built with the build
architecture compiler (or execution fails). The obvious part is switching to
CC_FOR_BUILD. That also depends on it not requiring any other cups components.
In particular, removing uses of strlcpy and replacing host architecture-
specific includes is thus needed.

Bug-Debian: https://bugs.debian.org/837936
---
 Makedefs.in     |  1 +
 configure.ac    |  9 +++++++++
 man/Makefile    |  7 ++-----
 man/mantohtml.c | 15 ++++++++++-----
 4 files changed, 22 insertions(+), 10 deletions(-)

diff --git a/Makedefs.in b/Makedefs.in
index 367f73c81..9c5d8f39e 100644
--- a/Makedefs.in
+++ b/Makedefs.in
@@ -22,6 +22,7 @@ CUPS_VERSION    =       @CUPS_VERSION@
 AR		=	@AR@
 AWK		=	@AWK@
 CC		=	@LIBTOOL_CC@ @CC@
+CC_FOR_BUILD	=	@CC_FOR_BUILD@
 CHMOD		=	@CHMOD@
 CXX		=	@LIBTOOL_CXX@ @CXX@
 DSO		=	@DSO@
diff --git a/configure.ac b/configure.ac
index 9f5b41d5d..3307c13f9 100644
--- a/configure.ac
+++ b/configure.ac
@@ -19,6 +19,15 @@ sinclude(config-scripts/cups-common.m4)
 sinclude(config-scripts/cups-directories.m4)
 sinclude(config-scripts/cups-manpages.m4)
 
+AC_MSG_CHECKING([for build system compiler])
+if test "$cross_compiling" = yes; then
+	CC_FOR_BUILD=${CC_FOR_BUILD-cc}
+else
+	CC_FOR_BUILD=${CC}
+fi
+AC_MSG_RESULT(${CC_FOR_BUILD})
+AC_SUBST(CC_FOR_BUILD)
+
 sinclude(config-scripts/cups-sharedlibs.m4)
 sinclude(config-scripts/cups-libtool.m4)
 sinclude(config-scripts/cups-compiler.m4)
diff --git a/man/Makefile b/man/Makefile
index 1335d7d2b..5d5d0ee4f 100644
--- a/man/Makefile
+++ b/man/Makefile
@@ -220,8 +220,5 @@ html:	$(MAN1) $(MAN5) $(MAN7) $(MAN8) mantohtml
 		./mantohtml `basename $$file .$(MAN8EXT)`.man >../doc/help/man-`basename $$file .$(MAN8EXT)`.html; \
 	done
 
-mantohtml:	mantohtml.o ../cups/$(LIBCUPSSTATIC)
-	$(LD_CC) $(ARCHFLAGS) $(LDFLAGS) -o $@ mantohtml.o \
-		../cups/$(LIBCUPSSTATIC) $(LIBGSSAPI) $(SSLLIBS) \
-		$(DNSSDLIBS) $(COMMONLIBS) $(LIBZ)
-	$(CODE_SIGN) -s "$(CODE_SIGN_IDENTITY)" $@
+mantohtml:	mantohtml.c
+	$(CC_FOR_BUILD) -o $@ $<
diff --git a/man/mantohtml.c b/man/mantohtml.c
index 2a9353a9f..6223f17d2 100644
--- a/man/mantohtml.c
+++ b/man/mantohtml.c
@@ -11,8 +11,10 @@
  * Include necessary headers.
  */
 
-#include <cups/string-private.h>
-#include <cups/array-private.h>
+#include <ctype.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
 #include <unistd.h>
 
 
@@ -811,7 +813,8 @@ main(int  argc,				/* I - Number of command-line args */
         * Anchor for HTML output...
         */
 
-        strlcpy(anchor, line + 4, sizeof(anchor));
+        strncpy(anchor, line + 4, sizeof(anchor) - 1);
+        anchor[sizeof(anchor) - 1] = '\0';
       }
       else if (strncmp(line, ".\\\"", 3))
       {
@@ -940,7 +943,8 @@ html_alternate(const char *s,		/* I - String */
 		manfile[1024],		/* Man page filename */
 		manurl[1024];		/* Man page URL */
 
-        strlcpy(name, s, sizeof(name));
+        strncpy(name, s, sizeof(name) - 1);
+        name[sizeof(name) - 1] = '\0';
         if ((size_t)(end - s) < sizeof(name))
           name[end - s] = '\0';
 
@@ -1173,7 +1177,8 @@ html_fputs(const char *s,		/* I  - String */
       if (end[-1] == ',' || end[-1] == '.' || end[-1] == ')')
         end --;
 
-      strlcpy(temp, s, sizeof(temp));
+      strncpy(temp, s, sizeof(temp) - 1);
+      temp[sizeof(temp) - 1] = '\0';
       if ((size_t)(end -s) < sizeof(temp))
         temp[end - s] = '\0';