Skip to content

Commit 1bdead1

Browse files
committed
Only use system includes for mksiglist and mksigname.
These are standalone programs that run on the host system (which may differ from the target system) so we should not include config.h and sudo_compat.h.
1 parent b0d9433 commit 1bdead1

File tree

3 files changed

+28
-19
lines changed

3 files changed

+28
-19
lines changed

lib/util/Makefile.in

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1148,19 +1148,15 @@ mkdirat.i: $(srcdir)/mkdirat.c $(incdir)/sudo_compat.h $(top_builddir)/config.h
11481148
$(CPP) $(CPPFLAGS) $(srcdir)/mkdirat.c > $@
11491149
mkdirat.plog: mkdirat.i
11501150
rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/mkdirat.c --i-file mkdirat.i --output-file $@
1151-
mksiglist.lo: $(srcdir)/mksiglist.c $(incdir)/sudo_compat.h \
1152-
$(srcdir)/mksiglist.h $(top_builddir)/config.h
1151+
mksiglist.lo: $(srcdir)/mksiglist.c $(srcdir)/mksiglist.h
11531152
$(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(HARDENING_CFLAGS) $(srcdir)/mksiglist.c
1154-
mksiglist.i: $(srcdir)/mksiglist.c $(incdir)/sudo_compat.h \
1155-
$(srcdir)/mksiglist.h $(top_builddir)/config.h
1153+
mksiglist.i: $(srcdir)/mksiglist.c $(srcdir)/mksiglist.h
11561154
$(CPP) $(CPPFLAGS) $(srcdir)/mksiglist.c > $@
11571155
mksiglist.plog: mksiglist.i
11581156
rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/mksiglist.c --i-file mksiglist.i --output-file $@
1159-
mksigname.lo: $(srcdir)/mksigname.c $(incdir)/sudo_compat.h \
1160-
$(srcdir)/mksigname.h $(top_builddir)/config.h
1157+
mksigname.lo: $(srcdir)/mksigname.c $(srcdir)/mksigname.h
11611158
$(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(HARDENING_CFLAGS) $(srcdir)/mksigname.c
1162-
mksigname.i: $(srcdir)/mksigname.c $(incdir)/sudo_compat.h \
1163-
$(srcdir)/mksigname.h $(top_builddir)/config.h
1159+
mksigname.i: $(srcdir)/mksigname.c $(srcdir)/mksigname.h
11641160
$(CPP) $(CPPFLAGS) $(srcdir)/mksigname.c > $@
11651161
mksigname.plog: mksigname.i
11661162
rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/mksigname.c --i-file mksigname.i --output-file $@

lib/util/mksiglist.c

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,21 @@
2121
* PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com
2222
*/
2323

24+
/*
25+
* Self-contained program run on the host to generate sudo_sys_siglist[]
26+
* for systems that lack sys_siglist[] or the equivalent (like HP-UX).
27+
*
28+
* We cannot include config.h or sudo_compat.h here since those refer
29+
* to the target, not the host, system.
30+
*/
2431

25-
#include <config.h>
26-
32+
#include <stdio.h>
2733
#include <stdlib.h>
2834
#include <signal.h>
2935

30-
#include <sudo_compat.h>
31-
32-
sudo_dso_public int main(int argc, char *argv[]);
36+
#ifndef nitems
37+
# define nitems(_a) (sizeof((_a)) / sizeof((_a)[0]))
38+
#endif
3339

3440
int
3541
main(int argc, char *argv[])
@@ -44,7 +50,7 @@ main(int argc, char *argv[])
4450
* so it cannot use any of the functions in libsudo_util.
4551
*/
4652
puts("const char *const sudo_sys_siglist[] = {");
47-
for (i = 0; i < NSIG; i++) {
53+
for (i = 0; i < nitems(sudo_sys_siglist); i++) {
4854
if (sudo_sys_siglist[i] != NULL) {
4955
printf(" \"%s\",\n", sudo_sys_siglist[i]);
5056
} else {

lib/util/mksigname.c

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,21 @@
2222
*/
2323

2424

25-
#include <config.h>
25+
/*
26+
* Self-contained program run on the host to generate sudo_sys_signame[]
27+
* for systems that lack sys_signame[] or the equivalent (like HP-UX).
28+
*
29+
* We cannot include config.h or sudo_compat.h here since those refer
30+
* to the target, not the host, system.
31+
*/
2632

33+
#include <stdio.h>
2734
#include <stdlib.h>
2835
#include <signal.h>
2936

30-
#include <sudo_compat.h>
31-
32-
sudo_dso_public int main(int argc, char *argv[]);
37+
#ifndef nitems
38+
# define nitems(_a) (sizeof((_a)) / sizeof((_a)[0]))
39+
#endif
3340

3441
int
3542
main(int argc, char *argv[])
@@ -44,7 +51,7 @@ main(int argc, char *argv[])
4451
* so it cannot use any of the functions in libsudo_util.
4552
*/
4653
puts("const char *const sudo_sys_signame[] = {");
47-
for (i = 0; i < NSIG; i++) {
54+
for (i = 0; i < nitems(sudo_sys_signame); i++) {
4855
if (sudo_sys_signame[i] != NULL) {
4956
printf(" \"%s\",\n", sudo_sys_signame[i]);
5057
} else {

0 commit comments

Comments
 (0)