From 209ec507af0152c9e8e804b1b5f5eaac5b201a23 Mon Sep 17 00:00:00 2001 From: Pavel Raiskup Date: Wed, 27 Mar 2013 14:28:58 +0100 Subject: [PATCH] tar: silence gcc warnings Version: 2:1.26-22 --- tar-1.26-silence-gcc.patch | 230 +++++++++++++++++++++++++++++++++++++ tar.spec | 7 ++ 2 files changed, 237 insertions(+) create mode 100644 tar-1.26-silence-gcc.patch diff --git a/tar-1.26-silence-gcc.patch b/tar-1.26-silence-gcc.patch new file mode 100644 index 0000000..108f376 --- /dev/null +++ b/tar-1.26-silence-gcc.patch @@ -0,0 +1,230 @@ +diff --git a/lib/rmt.h b/lib/rmt.h +index 2ce9dc5..4580e49 100644 +--- a/lib/rmt.h ++++ b/lib/rmt.h +@@ -17,8 +17,9 @@ + along with this program; if not, write to the Free Software Foundation, + Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ + +-extern char *rmt_command; +-extern char *rmt_dev_name__; ++/* upstream fix 0b3d84a0ee */ ++extern char const *rmt_command; ++extern char const *rmt_dev_name__; + + int rmt_open__ (const char *, int, int, const char *); + int rmt_close__ (int); +diff --git a/lib/rtapelib.c b/lib/rtapelib.c +index 3aee428..1cef0fc 100644 +--- a/lib/rtapelib.c ++++ b/lib/rtapelib.c +@@ -90,10 +90,10 @@ static int from_remote[MAXUNIT][2] = {{-1, -1}, {-1, -1}, {-1, -1}, {-1, -1}}; + /* The pipes for sending data to remote tape drives. */ + static int to_remote[MAXUNIT][2] = {{-1, -1}, {-1, -1}, {-1, -1}, {-1, -1}}; + +-char *rmt_command = DEFAULT_RMT_COMMAND; ++char const *rmt_command = DEFAULT_RMT_COMMAND; /* upstream fix 0b3d84a0ee */ + + /* Temporary variable used by macros in rmt.h. */ +-char *rmt_dev_name__; ++char const *rmt_dev_name__; /* upstream fix 0b3d84a0ee */ + + /* If true, always consider file names to be local, even if they contain + colons */ +@@ -490,15 +490,17 @@ rmt_open__ (const char *file_name, int open_mode, int bias, + { + /* Child. */ + +- close (STDIN_FILENO); +- dup (to_remote[remote_pipe_number][PREAD]); +- close (to_remote[remote_pipe_number][PREAD]); +- close (to_remote[remote_pipe_number][PWRITE]); +- +- close (STDOUT_FILENO); +- dup (from_remote[remote_pipe_number][PWRITE]); +- close (from_remote[remote_pipe_number][PREAD]); +- close (from_remote[remote_pipe_number][PWRITE]); ++ /* upstream fix 0b3d84a0ee */ ++ if (dup2 (to_remote[remote_pipe_number][PREAD], STDIN_FILENO) < 0 ++ || (to_remote[remote_pipe_number][PREAD] != STDIN_FILENO ++ && close (to_remote[remote_pipe_number][PREAD]) != 0) ++ || (to_remote[remote_pipe_number][PWRITE] != STDIN_FILENO ++ && close (to_remote[remote_pipe_number][PWRITE]) != 0) ++ || dup2 (from_remote[remote_pipe_number][PWRITE], STDOUT_FILENO) < 0 ++ || close (from_remote[remote_pipe_number][PREAD]) != 0 ++ || close (from_remote[remote_pipe_number][PWRITE]) != 0) ++ error (EXIT_ON_EXEC_ERROR, errno, ++ _("Cannot redirect files for remote shell")); + + sys_reset_uid_gid (); + +diff --git a/lib/system.h b/lib/system.h +index 2deb585..599d4ba 100644 +--- a/lib/system.h ++++ b/lib/system.h +@@ -471,8 +471,13 @@ char *getenv (); + # define SET_BINARY_MODE(arc) + # define ERRNO_IS_EACCES 0 + # define TTY_NAME "/dev/tty" +-# define sys_reset_uid_gid() \ +- do { setuid (getuid ()); setgid (getgid ()); } while (0) ++ ++/* upstream fix 0b3d84a0ee */ ++# define sys_reset_uid_gid() \ ++ do { \ ++ if (! (setuid (getuid ()) == 0 && setgid (getgid ()) == 0)) \ ++ abort (); \ ++ } while (0) + #endif + + #if XENIX +diff --git a/lib/wordsplit.c b/lib/wordsplit.c +index bd5d59d..5f555ea 100644 +--- a/lib/wordsplit.c ++++ b/lib/wordsplit.c +@@ -796,6 +796,8 @@ expvar (struct wordsplit *wsp, const char *str, size_t len, + value = ""; + } + /* FIXME: handle defstr */ ++ (void) defstr; /* upstream commit 17f99bc6f1 */ ++ + if (value) + { + if (flg & _WSNF_QUOTE) +diff --git a/src/compare.c b/src/compare.c +index 273269a..796d7aa 100644 +--- a/src/compare.c ++++ b/src/compare.c +@@ -362,7 +362,7 @@ static void + diff_dumpdir (void) + { + const char *dumpdir_buffer; +- dev_t dev = 0; ++ /* upstream fix 5bb04335079 */ + struct stat stat_data; + + if (deref_stat (current_stat_info.file_name, &stat_data) != 0) +@@ -372,8 +372,7 @@ diff_dumpdir (void) + else + stat_error (current_stat_info.file_name); + } +- else +- dev = stat_data.st_dev; ++ /* upstream fix 5bb04335079 */ + + dumpdir_buffer = directory_contents (scan_directory (¤t_stat_info)); + +diff --git a/src/system.c b/src/system.c +index a27a7de..2049240 100644 +--- a/src/system.c ++++ b/src/system.c +@@ -25,7 +25,7 @@ + #include + #include + +-static void ++static void __attribute__ ((__noreturn__)) /* upstream (similar) fix in 17f99bc6f1405 */ + xexec (const char *cmd) + { + struct wordsplit ws; +@@ -745,8 +745,7 @@ int + sys_exec_command (char *file_name, int typechar, struct tar_stat_info *st) + { + int p[2]; +- char *argv[4]; +- ++ + xpipe (p); + pipe_handler = signal (SIGPIPE, SIG_IGN); + global_pid = xfork (); +@@ -806,7 +805,6 @@ int + sys_exec_info_script (const char **archive_name, int volume_number) + { + pid_t pid; +- char *argv[4]; + char uintbuf[UINTMAX_STRSIZE_BOUND]; + int p[2]; + static RETSIGTYPE (*saved_handler) (int sig); +@@ -881,7 +879,7 @@ sys_exec_checkpoint_script (const char *script_name, + int checkpoint_number) + { + pid_t pid; +- char *argv[4]; ++ /* upstream commit 17f99bc6f */ + char uintbuf[UINTMAX_STRSIZE_BOUND]; + + pid = xfork (); +@@ -912,10 +910,7 @@ sys_exec_checkpoint_script (const char *script_name, + setenv ("TAR_FORMAT", + archive_format_string (current_format == DEFAULT_FORMAT ? + archive_format : current_format), 1); +- argv[0] = "/bin/sh"; +- argv[1] = "-c"; +- argv[2] = (char *) script_name; +- argv[3] = NULL; ++ /* upstream commit 17f99bc6f */ + + priv_set_restore_linkdir (); + xexec (script_name); +diff --git a/src/update.c b/src/update.c +index 4739e0d..3b28734 100644 +--- a/src/update.c ++++ b/src/update.c +@@ -145,7 +145,7 @@ update_archive (void) + if (S_ISDIR (s.st_mode)) + { + char *p, *dirp; +- DIR *stream; ++ DIR *stream = NULL; /* upstream commit 5bb043350790 */ + int fd = openat (chdir_fd, name->name, + open_read_flags | O_DIRECTORY); + if (fd < 0) +diff --git a/tests/genfile.c b/tests/genfile.c +index 8541be6..fa480ef 100644 +--- a/tests/genfile.c ++++ b/tests/genfile.c +@@ -485,9 +485,11 @@ generate_files_from_list () + static void + mkhole (int fd, off_t displ) + { +- if (lseek (fd, displ, SEEK_CUR) == -1) ++ off_t offset = lseek (fd, displ, SEEK_CUR); ++ if (offset < 0) + error (EXIT_FAILURE, errno, "lseek"); +- ftruncate (fd, lseek (fd, 0, SEEK_CUR)); ++ if (ftruncate (fd, offset) != 0) ++ error (EXIT_FAILURE, errno, "ftruncate"); + } + + static void +@@ -685,13 +687,18 @@ exec_checkpoint (struct action *p) + error (0, errno, _("cannot open `%s'"), p->name); + break; + } +- ftruncate (fd, p->size); ++ if (ftruncate (fd, p->size) != 0) ++ { ++ error (0, errno, _("cannot truncate `%s'"), p->name); ++ break; ++ } + close (fd); + } + break; + + case OPT_EXEC: +- system (p->name); ++ if (system (p->name) != 0) ++ error (0, 0, _("command failed: %s"), p->name); + break; + + case OPT_UNLINK: +@@ -761,7 +768,8 @@ exec_command (void) + signal (SIGCHLD, SIG_DFL); + #endif + +- pipe (fd); ++ if (pipe (fd) != 0) ++ error (EXIT_FAILURE, errno, "pipe"); + + pid = fork (); + if (pid == -1) diff --git a/tar.spec b/tar.spec index c7c1583..76e8933 100644 --- a/tar.spec +++ b/tar.spec @@ -98,6 +98,11 @@ Patch14: tar-1.26-command-args.patch # ~> #926610 (downstream) Patch15: tar-1.26-arm-config-sub-guess.patch +# Silence gcc warnings +# ~> upstream tar: 17f99bc6f, 5bb0433 +# ~> upstream paxutils: 0b3d84a0 +Patch999: tar-1.26-silence-gcc.patch + # run "make check" by default %bcond_without check @@ -146,6 +151,7 @@ the rmt package. %patch13 -p1 -b .extract-single-volume %patch14 -p1 -b .command-args %patch15 -p1 -b .arm-config-guess-sub +%patch999 -p1 -b .silence-gcc autoreconf -v @@ -205,6 +211,7 @@ fi * Tue Mar 26 2013 Pavel Raiskup - 2:1.26-22 - enable build for arm64 (#926610) - fix the NAME part in manual page (copied from texinfo) +- silence gcc warnings (lint fixes without risk from upstream) for RPMDiff * Tue Mar 19 2013 Pavel Raiskup - 2:1.26-21 - allow extracting single volume from multi-volume archive (#919897)