From 4a6bfcaa46dad4df900c40ac88e7d969dfd8b33e Mon Sep 17 00:00:00 2001 From: Kamil Dudka Date: Thu, 5 Mar 2020 18:00:04 +0100 Subject: [PATCH] do not use IF_LINT for initialization of scalar variables It triggers false positives in compilers and static analyzers for no real benefit. --- coreutils-8.32-if-lint.patch | 364 +++++++++++++++++++++++++++++++++++ coreutils.spec | 3 + 2 files changed, 367 insertions(+) create mode 100644 coreutils-8.32-if-lint.patch diff --git a/coreutils-8.32-if-lint.patch b/coreutils-8.32-if-lint.patch new file mode 100644 index 0000000..24eaaaf --- /dev/null +++ b/coreutils-8.32-if-lint.patch @@ -0,0 +1,364 @@ +From e6df4c3b75bbaf464fc5475a4bdc392ab500670b Mon Sep 17 00:00:00 2001 +From: Kamil Dudka +Date: Thu, 5 Mar 2020 17:37:12 +0100 +Subject: [PATCH] do not use IF_LINT for initialization of scalar variables + +It triggers false positives in compilers and static analyzers +for no real benefit. +--- + src/chcon.c | 2 +- + src/chmod.c | 4 ++-- + src/copy.c | 4 ++-- + src/cp.c | 2 +- + src/cut.c | 2 +- + src/df.c | 2 +- + src/expand.c | 2 +- + src/expr.c | 2 +- + src/ls.c | 2 +- + src/md5sum.c | 4 ++-- + src/od.c | 4 ++-- + src/paste.c | 4 ++-- + src/pr.c | 2 +- + src/shred.c | 4 ++-- + src/sort.c | 14 +++++++------- + src/split.c | 2 +- + src/truncate.c | 2 +- + src/unexpand.c | 4 ++-- + src/uniq.c | 4 ++-- + src/who.c | 2 +- + 20 files changed, 34 insertions(+), 34 deletions(-) + +diff --git a/src/chcon.c b/src/chcon.c +index 724ec9b..c1cf4c4 100644 +--- a/src/chcon.c ++++ b/src/chcon.c +@@ -142,7 +142,7 @@ static int + change_file_context (int fd, char const *file) + { + char *file_context = NULL; +- context_t context IF_LINT (= 0); ++ context_t context = 0; + char const * context_string; + int errors = 0; + +diff --git a/src/chmod.c b/src/chmod.c +index ec91534..a71a43c 100644 +--- a/src/chmod.c ++++ b/src/chmod.c +@@ -190,8 +190,8 @@ process_file (FTS *fts, FTSENT *ent) + char const *file_full_name = ent->fts_path; + char const *file = ent->fts_accpath; + const struct stat *file_stats = ent->fts_statp; +- mode_t old_mode IF_LINT ( = 0); +- mode_t new_mode IF_LINT ( = 0); ++ mode_t old_mode = 0; ++ mode_t new_mode = 0; + bool ok = true; + bool chmod_succeeded = false; + +diff --git a/src/copy.c b/src/copy.c +index 6e5efc7..bb80038 100644 +--- a/src/copy.c ++++ b/src/copy.c +@@ -1889,8 +1889,8 @@ copy_internal (char const *src_name, char const *dst_name, + { + struct stat src_sb; + struct stat dst_sb; +- mode_t src_mode IF_LINT ( = 0); +- mode_t dst_mode IF_LINT ( = 0); ++ mode_t src_mode = 0; ++ mode_t dst_mode = 0; + mode_t dst_mode_bits; + mode_t omitted_permissions; + bool restore_dst_mode = false; +diff --git a/src/cp.c b/src/cp.c +index 0193df8..609adcf 100644 +--- a/src/cp.c ++++ b/src/cp.c +@@ -403,7 +403,7 @@ make_dir_parents_private (char const *const_dir, size_t src_offset, + slash++; + while ((slash = strchr (slash, '/'))) + { +- struct dir_attr *new IF_LINT ( = NULL); ++ struct dir_attr *new = NULL; + bool missing_dir; + + *slash = '\0'; +diff --git a/src/cut.c b/src/cut.c +index 35ab5fc..685ba8d 100644 +--- a/src/cut.c ++++ b/src/cut.c +@@ -835,7 +835,7 @@ main (int argc, char **argv) + int optc; + bool ok; + bool delim_specified = false; +- char *spec_list_string IF_LINT ( = NULL); ++ char *spec_list_string = NULL; + char mbdelim[MB_LEN_MAX + 1]; + + initialize_main (&argc, &argv); +diff --git a/src/df.c b/src/df.c +index 7e01839..8af1d14 100644 +--- a/src/df.c ++++ b/src/df.c +@@ -1588,7 +1588,7 @@ field names are: 'source', 'fstype', 'itotal', 'iused', 'iavail', 'ipcent',\n\ + int + main (int argc, char **argv) + { +- struct stat *stats IF_LINT ( = 0); ++ struct stat *stats = 0; + + initialize_main (&argc, &argv); + set_program_name (argv[0]); +diff --git a/src/expand.c b/src/expand.c +index bf61aff..cc9d4cd 100644 +--- a/src/expand.c ++++ b/src/expand.c +@@ -190,7 +190,7 @@ expand (void) + { + /* Column the next input tab stop is on. */ + uintmax_t next_tab_column; +- bool last_tab IF_LINT (=0); ++ bool last_tab = 0; + + next_tab_column = get_next_tab_column (column, &tab_index, + &last_tab); +diff --git a/src/expr.c b/src/expr.c +index e134872..a49d37c 100644 +--- a/src/expr.c ++++ b/src/expr.c +@@ -690,7 +690,7 @@ trace (fxn) + static VALUE * + docolon (VALUE *sv, VALUE *pv) + { +- VALUE *v IF_LINT ( = NULL); ++ VALUE *v = NULL; + const char *errmsg; + struct re_pattern_buffer re_buffer; + char fastmap[UCHAR_MAX + 1]; +diff --git a/src/ls.c b/src/ls.c +index 64ecf40..cc61400 100644 +--- a/src/ls.c ++++ b/src/ls.c +@@ -4451,7 +4451,7 @@ quote_name_buf (char **inbuf, size_t bufsize, char *name, + int needs_general_quoting, size_t *width, bool *pad) + { + char *buf = *inbuf; +- size_t displayed_width IF_LINT ( = 0); ++ size_t displayed_width = 0; + size_t len = 0; + bool quoted; + +diff --git a/src/md5sum.c b/src/md5sum.c +index 447a005..91b9a9e 100644 +--- a/src/md5sum.c ++++ b/src/md5sum.c +@@ -687,9 +687,9 @@ digest_check (const char *checkfile_name) + line_chars_allocated = 0; + do + { +- char *filename IF_LINT ( = NULL); ++ char *filename = NULL; + int binary; +- unsigned char *hex_digest IF_LINT ( = NULL); ++ unsigned char *hex_digest = NULL; + ssize_t line_length; + + ++line_number; +diff --git a/src/od.c b/src/od.c +index 200bc16..7482bb5 100644 +--- a/src/od.c ++++ b/src/od.c +@@ -1570,7 +1570,7 @@ main (int argc, char **argv) + int n_files; + size_t i; + int l_c_m; +- size_t desired_width IF_LINT ( = 0); ++ size_t desired_width = 0; + bool modern = false; + bool width_specified = false; + bool ok = true; +@@ -1579,7 +1579,7 @@ main (int argc, char **argv) + + /* The old-style 'pseudo starting address' to be printed in parentheses + after any true address. */ +- uintmax_t pseudo_start IF_LINT ( = 0); ++ uintmax_t pseudo_start = 0; + + initialize_main (&argc, &argv); + set_program_name (argv[0]); +diff --git a/src/paste.c b/src/paste.c +index 9f401c9..6dd3a4e 100644 +--- a/src/paste.c ++++ b/src/paste.c +@@ -234,8 +234,8 @@ paste_parallel (size_t nfiles, char **fnamptr) + + for (size_t i = 0; i < nfiles && files_open; i++) + { +- int chr IF_LINT ( = 0); /* Input character. */ +- int err IF_LINT ( = 0); /* Input errno value. */ ++ int chr = 0; /* Input character. */ ++ int err = 0; /* Input errno value. */ + bool sometodo = false; /* Input chars to process. */ + + if (fileptr[i]) +diff --git a/src/pr.c b/src/pr.c +index 6374a7f..3ac3c03 100644 +--- a/src/pr.c ++++ b/src/pr.c +@@ -2606,7 +2606,7 @@ static bool + read_line (COLUMN *p) + { + int c; +- int chars IF_LINT ( = 0); ++ int chars = 0; + int last_input_position; + int j, k; + COLUMN *q; +diff --git a/src/shred.c b/src/shred.c +index fbbeddf..e9a6414 100644 +--- a/src/shred.c ++++ b/src/shred.c +@@ -399,7 +399,7 @@ dopass (int fd, struct stat const *st, char const *qname, off_t *sizep, + { + off_t size = *sizep; + off_t offset; /* Current file position */ +- time_t thresh IF_LINT ( = 0); /* Time to maybe print next status update */ ++ time_t thresh = 0; /* Time to maybe print next status update */ + time_t now = 0; /* Current time */ + size_t lim; /* Amount of data to try writing */ + size_t soff; /* Offset into buffer for next write */ +@@ -424,7 +424,7 @@ dopass (int fd, struct stat const *st, char const *qname, off_t *sizep, + + /* Printable previous offset into the file */ + char previous_offset_buf[LONGEST_HUMAN_READABLE + 1]; +- char const *previous_human_offset IF_LINT ( = 0); ++ char const *previous_human_offset = 0; + + /* As a performance tweak, avoid direct I/O for small sizes, + as it's just a performance rather then security consideration, +diff --git a/src/sort.c b/src/sort.c +index 8e1533e..cb494f4 100644 +--- a/src/sort.c ++++ b/src/sort.c +@@ -1114,7 +1114,7 @@ pipe_fork (int pipefds[2], size_t tries) + struct tempnode *saved_temphead; + int saved_errno; + double wait_retry = 0.25; +- pid_t pid IF_LINT ( = -1); ++ pid_t pid = -1; + struct cs_status cs; + + if (pipe2 (pipefds, O_CLOEXEC) < 0) +@@ -2999,9 +2999,9 @@ keycompare_uni (const struct line *a, const struct line *b) + size_t tlena; + size_t tlenb; + +- char enda IF_LINT (= 0); +- char endb IF_LINT (= 0); +- void *allocated IF_LINT (= NULL); ++ char enda = 0; ++ char endb = 0; ++ void *allocated = NULL; + char stackbuf[4000]; + + if (ignore || translate) +@@ -3267,8 +3267,8 @@ keycompare_mb (const struct line *a, const struct line *b) + size_t lena = lima <= texta ? 0 : lima - texta; + size_t lenb = limb <= textb ? 0 : limb - textb; + +- char enda IF_LINT (= 0); +- char endb IF_LINT (= 0); ++ char enda = 0; ++ char endb = 0; + + char const *translate = key->translate; + bool const *ignore = key->ignore; +@@ -4551,7 +4551,7 @@ sort (char *const *files, size_t nfiles, char const *output_file, + size_t nthreads) + { + struct buffer buf; +- IF_LINT (buf.buf = NULL); ++ buf.buf = NULL; + size_t ntemps = 0; + bool output_file_created = false; + +diff --git a/src/split.c b/src/split.c +index 09e610b..aefa4a7 100644 +--- a/src/split.c ++++ b/src/split.c +@@ -1132,7 +1132,7 @@ lines_rr (uintmax_t k, uintmax_t n, char *buf, size_t bufsize) + bool wrote = false; + bool file_limit; + size_t i_file; +- of_t *files IF_LINT (= NULL); ++ of_t *files = NULL; + uintmax_t line_no; + + if (k) +diff --git a/src/truncate.c b/src/truncate.c +index 91d9674..76e224f 100644 +--- a/src/truncate.c ++++ b/src/truncate.c +@@ -203,7 +203,7 @@ main (int argc, char **argv) + { + bool got_size = false; + bool errors = false; +- off_t size IF_LINT ( = 0); ++ off_t size = 0; + off_t rsize = -1; + rel_mode_t rel_mode = rm_abs; + int c, fd = -1, oflags; +diff --git a/src/unexpand.c b/src/unexpand.c +index 7d5dd64..b0e0ab3 100644 +--- a/src/unexpand.c ++++ b/src/unexpand.c +@@ -225,7 +225,7 @@ unexpand (void) + + if (blank) + { +- bool last_tab IF_LINT (=0); ++ bool last_tab = 0; + + next_tab_column = get_next_tab_column (column, &tab_index, + &last_tab); +@@ -320,7 +320,7 @@ int + main (int argc, char **argv) + { + bool have_tabval = false; +- uintmax_t tabval IF_LINT ( = 0); ++ uintmax_t tabval = 0; + int c; + + /* If true, cancel the effect of any -a (explicit or implicit in -t), +diff --git a/src/uniq.c b/src/uniq.c +index ba3c4ce..fa0fc5c 100644 +--- a/src/uniq.c ++++ b/src/uniq.c +@@ -552,8 +552,8 @@ check_file (const char *infile, const char *outfile, char delimiter) + */ + if (output_unique && output_first_repeated && countmode == count_none) + { +- char *prevfield IF_LINT ( = NULL); +- size_t prevlen IF_LINT ( = 0); ++ char *prevfield = NULL; ++ size_t prevlen = 0; + bool first_group_printed = false; + #if HAVE_MBRTOWC + mbstate_t prevstate; +diff --git a/src/who.c b/src/who.c +index abf3bc7..401ad0f 100644 +--- a/src/who.c ++++ b/src/who.c +@@ -568,7 +568,7 @@ print_heading (void) + static void + scan_entries (size_t n, const STRUCT_UTMP *utmp_buf) + { +- char *ttyname_b IF_LINT ( = NULL); ++ char *ttyname_b = NULL; + time_t boottime = TYPE_MINIMUM (time_t); + + if (include_heading) +-- +2.21.1 + diff --git a/coreutils.spec b/coreutils.spec index 365effc..eec800b 100644 --- a/coreutils.spec +++ b/coreutils.spec @@ -60,6 +60,9 @@ Patch908: coreutils-getgrouplist.patch #(upstream did some SELinux implementation unlike with RedHat patch) Patch950: coreutils-selinux.patch +# do not use IF_LINT for initialization of scalar variables +Patch951: coreutils-8.32-if-lint.patch + Conflicts: filesystem < 3 # To avoid clobbering installs Conflicts: coreutils-single