Author: robert
Date: 2006-10-13 08:33:50 -0600 (Fri, 13 Oct 2006)
New Revision: 1708
Added:
trunk/vim/vim-7.0-fortify_warnings-1.patch
Log:
Added vim-7.0-fortify_warnings-1.patch
Added: trunk/vim/vim-7.0-fortify_warnings-1.patch
===================================================================
--- trunk/vim/vim-7.0-fortify_warnings-1.patch (rev 0)
+++ trunk/vim/vim-7.0-fortify_warnings-1.patch 2006-10-13 14:33:50 UTC (rev
1708)
@@ -0,0 +1,446 @@
+Submitted By: Robert Connolly <robert at linuxfromscratch dot org> (ashes)
+Date: 2006-10-12
+Initial Package Version: 7.0
+Upstream Status: Submitted
+Origin: None
+Description: This patch fixes warnings caused by -D_FORTIFY_SOURCE=2.
+
+diff -Naur vim70.orig/src/diff.c vim70/src/diff.c
+--- vim70.orig/src/diff.c 2006-04-22 16:15:04.000000000 +0000
++++ vim70/src/diff.c 2006-10-13 13:23:05.000000000 +0000
+@@ -699,12 +699,18 @@
+ fd = mch_fopen((char *)tmp_orig, "w");
+ if (fd != NULL)
+ {
+- fwrite("line1\n", (size_t)6, (size_t)1, fd);
++ if (fwrite("line1\n", (size_t)6, (size_t)1, fd) != 0){
++ (void)fprintf(stderr, "fwrite failed\n");
++ exit(1);
++ }
+ fclose(fd);
+ fd = mch_fopen((char *)tmp_new, "w");
+ if (fd != NULL)
+ {
+- fwrite("line2\n", (size_t)6, (size_t)1, fd);
++ if (fwrite("line2\n", (size_t)6, (size_t)1, fd) !=0) {
++ (void)fprintf(stderr, "fwrite failed\n");
++ exit(1);
++ }
+ fclose(fd);
+ diff_file(tmp_orig, tmp_new, tmp_diff);
+ fd = mch_fopen((char *)tmp_diff, "r");
+@@ -921,11 +927,18 @@
+ else
+ {
+ # ifdef TEMPDIRNAMES
+- if (vim_tempdir != NULL)
+- mch_chdir((char *)vim_tempdir);
++ if (vim_tempdir != NULL) {
++ if (mch_chdir((char *)vim_tempdir) !=0) {
++ (void)fprintf(stderr, "mch_chdir failed\n");
++ exit(1);
++ }
++ }
+ else
+ # endif
+- mch_chdir("/tmp");
++ if (mch_chdir("/tmp") != 0) {
++ (void)fprintf(stderr, "mch_chdir failed\n");
++ exit(1);
++ }
+ shorten_fnames(TRUE);
+ }
+ #endif
+diff -Naur vim70.orig/src/ex_cmds.c vim70/src/ex_cmds.c
+--- vim70.orig/src/ex_cmds.c 2006-04-22 18:56:56.000000000 +0000
++++ vim70/src/ex_cmds.c 2006-10-13 13:23:05.000000000 +0000
+@@ -1919,7 +1919,10 @@
+ * root.
+ */
+ if (fp_out != NULL)
+- (void)fchown(fileno(fp_out), st_old.st_uid, st_old.st_gid);
++ if (fchown(fileno(fp_out), st_old.st_uid, st_old.st_gid) != 0) {
++ (void)fprintf(stderr, "fchown failed\n");
++ exit(1);
++ }
+ #endif
+ }
+ }
+diff -Naur vim70.orig/src/ex_docmd.c vim70/src/ex_docmd.c
+--- vim70.orig/src/ex_docmd.c 2006-05-05 16:33:19.000000000 +0000
++++ vim70/src/ex_docmd.c 2006-10-13 13:23:05.000000000 +0000
+@@ -8651,7 +8651,11 @@
+ else if (*dirnow != NUL
+ && (ssop_flags & SSOP_CURDIR) && globaldir != NULL)
+ {
+- (void)mch_chdir((char *)globaldir);
++ if (mch_chdir((char *)globaldir) != 0) {
++ (void)fprintf(stderr, "mch_chdir failed\n");
++ exit(1);
++ }
++
+ shorten_fnames(TRUE);
+ }
+
+diff -Naur vim70.orig/src/fileio.c vim70/src/fileio.c
+--- vim70.orig/src/fileio.c 2006-04-30 15:28:57.000000000 +0000
++++ vim70/src/fileio.c 2006-10-13 13:23:05.000000000 +0000
+@@ -2141,7 +2141,10 @@
+ {
+ /* Use stderr for stdin, makes shell commands work. */
+ close(0);
+- dup(2);
++ if (dup(2) != 0) {
++ (void)fprintf(stderr, "dup failed\n");
++ exit(1);
++ }
+ }
+ #endif
+
+@@ -3321,7 +3324,8 @@
+ {
+ # ifdef UNIX
+ # ifdef HAVE_FCHOWN
+- fchown(fd, st_old.st_uid, st_old.st_gid);
++ if (fchown(fd, st_old.st_uid, st_old.st_gid) == 0)
++ fchmod(fd, perm);
+ # endif
+ if (mch_stat((char *)IObuff, &st) < 0
+ || st.st_uid != st_old.st_uid
+@@ -4224,7 +4228,10 @@
+ || st.st_uid != st_old.st_uid
+ || st.st_gid != st_old.st_gid)
+ {
+- fchown(fd, st_old.st_uid, st_old.st_gid);
++ if (fchown(fd, st_old.st_uid, st_old.st_gid) != 0) {
++ (void)fprintf(stderr, "fchown failed\n");
++ exit(1);
++ }
+ if (perm >= 0) /* set permission again, may have changed */
+ (void)mch_setperm(wfname, perm);
+ }
+@@ -5862,9 +5869,15 @@
+ {
+ tbuf[FGETS_SIZE - 2] = NUL;
+ #ifdef USE_CR
+- fgets_cr((char *)tbuf, FGETS_SIZE, fp);
++ if (fgets_cr((char *)tbuf, FGETS_SIZE, fp) != 0) {
++ (void)fprintf(stderr, "fgets_cr failed\n");
++ exit(1);
++ }
+ #else
+- fgets((char *)tbuf, FGETS_SIZE, fp);
++ if (fgets((char *)tbuf, FGETS_SIZE, fp) != 0) {
++ (void)fprintf(stderr, "fgets failed\n");
++ exit(1);
++ }
+ #endif
+ } while (tbuf[FGETS_SIZE - 2] != NUL && tbuf[FGETS_SIZE - 2] != '\n');
+ }
+diff -Naur vim70.orig/src/main.c vim70/src/main.c
+--- vim70.orig/src/main.c 2006-05-03 17:36:44.000000000 +0000
++++ vim70/src/main.c 2006-10-13 13:23:05.000000000 +0000
+@@ -2267,7 +2267,10 @@
+ * Is there any other system that cannot do this?
+ */
+ close(0);
+- dup(2);
++ if (dup(2) != 0) {
++ (void)fprintf(stderr, "dup failed\n");
++ exit(1);
++ }
+ #endif
+ }
+
+diff -Naur vim70.orig/src/mbyte.c vim70/src/mbyte.c
+--- vim70.orig/src/mbyte.c 2006-04-30 11:51:01.000000000 +0000
++++ vim70/src/mbyte.c 2006-10-13 13:23:05.000000000 +0000
+@@ -705,7 +705,10 @@
+ * where mblen() returns 0 for invalid character.
+ * Therefore, following condition includes 0.
+ */
+- (void)mblen(NULL, 0); /* First reset the state. */
++ if (mblen(NULL, 0) != 0) { /* First reset the state. */
++ (void)fprintf(stderr, "mblen failed\n");
++ exit(1);
++ }
+ if (mblen(buf, (size_t)1) <= 0)
+ n = 2;
+ else
+diff -Naur vim70.orig/src/os_unix.c vim70/src/os_unix.c
+--- vim70.orig/src/os_unix.c 2006-05-01 08:13:15.000000000 +0000
++++ vim70/src/os_unix.c 2006-10-13 13:23:49.000000000 +0000
+@@ -296,7 +296,11 @@
+ char_u *s;
+ int len;
+ {
+- write(1, (char *)s, len);
++ /* This write(3) function often doesn't return 0. That's fine.
++ But to make FORTIFY_SOURCE happy we'll check it. */
++ if (write(1, (char *)s, len) == 0) {
++ return 0;
++ }
+ if (p_wd) /* Unix is too fast, slow down a bit more */
+ RealWaitForChar(read_cmd_fd, p_wd, NULL);
+ }
+@@ -3732,9 +3736,18 @@
+ */
+ if (fd >= 0)
+ {
+- dup(fd); /* To replace stdin (file descriptor 0) */
+- dup(fd); /* To replace stdout (file descriptor 1) */
+- dup(fd); /* To replace stderr (file descriptor 2) */
++ if (dup(fd) != 0) { /* To replace stdin (file descriptor
0) */
++ (void)fprintf(stderr, "dup failed\n");
++ exit(1);
++ }
++ if (dup(fd) != 0) { /* To replace stdout (file descriptor
1) */
++ (void)fprintf(stderr, "dup failed\n");
++ exit(1);
++ }
++ if (dup(fd) != 0) { /* To replace stderr (file descriptor
2) */
++ (void)fprintf(stderr, "dup failed\n");
++ exit(1);
++ }
+
+ /* Don't need this now that we've duplicated it */
+ close(fd);
+@@ -3819,13 +3832,19 @@
+ /* set up stdin for the child */
+ close(fd_toshell[1]);
+ close(0);
+- dup(fd_toshell[0]);
++ if (dup(fd_toshell[0]) != 0) {
++ (void)fprintf(stderr, "dup failed\n");
++ exit(1);
++ }
+ close(fd_toshell[0]);
+
+ /* set up stdout for the child */
+ close(fd_fromshell[0]);
+ close(1);
+- dup(fd_fromshell[1]);
++ if (dup(fd_fromshell[1]) != 0) {
++ (void)fprintf(stderr, "dup failed\n");
++ exit(1);
++ }
+ close(fd_fromshell[1]);
+
+ # ifdef FEAT_GUI
+@@ -3964,7 +3983,10 @@
+ && (lnum !=
+ curbuf->b_ml.ml_line_count
+ || curbuf->b_p_eol)))
+- write(toshell_fd, "\n", (size_t)1);
++ if (write(toshell_fd, "\n", (size_t)1) !=
0) {
++ (void)fprintf(stderr, "write failed\n");
++ exit(1);
++ }
+ ++lnum;
+ if (lnum > curbuf->b_op_end.lnum)
+ {
+diff -Naur vim70.orig/src/spell.c vim70/src/spell.c
+--- vim70.orig/src/spell.c 2006-05-05 07:49:58.000000000 +0000
++++ vim70/src/spell.c 2006-10-13 13:23:05.000000000 +0000
+@@ -7905,7 +7905,10 @@
+
+ i = (int)STRLEN(spin->si_info);
+ put_bytes(fd, (long_u)i, 4); /* <sectionlen> */
+- fwrite(spin->si_info, (size_t)i, (size_t)1, fd); /* <infotext> */
++ if (fwrite(spin->si_info, (size_t)i, (size_t)1, fd) != 0) { /*
<infotext> */
++ (void)fprintf(stderr, "fwrite failed\n");
++ exit(1);
++ }
+ }
+
+ /* SN_REGION: <regionname> ...
+@@ -7916,7 +7919,10 @@
+ putc(SNF_REQUIRED, fd); /* <sectionflags> */
+ l = spin->si_region_count * 2;
+ put_bytes(fd, (long_u)l, 4); /* <sectionlen> */
+- fwrite(spin->si_region_name, (size_t)l, (size_t)1, fd);
++ if (fwrite(spin->si_region_name, (size_t)l, (size_t)1, fd) != 0) {
++ (void)fprintf(stderr, "fwrite failed\n");
++ exit(1);
++ }
+ /* <regionname> ... */
+ regionmask = (1 << spin->si_region_count) - 1;
+ }
+@@ -7966,7 +7972,10 @@
+ }
+
+ put_bytes(fd, (long_u)l, 2); /* <folcharslen> */
+- fwrite(folchars, (size_t)l, (size_t)1, fd); /* <folchars> */
++ if (fwrite(folchars, (size_t)l, (size_t)1, fd) != 0) { /* <folchars> */
++ (void)fprintf(stderr, "fwrite failed\n");
++ exit(1);
++ }
+ }
+
+ /* SN_MIDWORD: <midword> */
+@@ -7977,7 +7986,10 @@
+
+ i = (int)STRLEN(spin->si_midword);
+ put_bytes(fd, (long_u)i, 4); /* <sectionlen> */
+- fwrite(spin->si_midword, (size_t)i, (size_t)1, fd); /* <midword> */
++ if (fwrite(spin->si_midword, (size_t)i, (size_t)1, fd) != 0) { /*
<midword> */
++ (void)fprintf(stderr, "fwrite failed\n");
++ exit(1);
++ }
+ }
+
+ /* SN_PREFCOND: <prefcondcnt> <prefcond> ... */
+@@ -8063,7 +8075,10 @@
+ p = rr == 1 ? ftp->ft_from : ftp->ft_to;
+ l = (int)STRLEN(p);
+ putc(l, fd);
+- fwrite(p, l, (size_t)1, fd);
++ if (fwrite(p, l, (size_t)1, fd) != 0) {
++ (void)fprintf(stderr, "fwrite failed\n");
++ exit(1);
++ }
+ }
+ }
+
+@@ -8081,11 +8096,17 @@
+ /* <sectionlen> */
+
+ put_bytes(fd, (long_u)l, 2); /* <sofofromlen> */
+- fwrite(spin->si_sofofr, l, (size_t)1, fd); /* <sofofrom> */
++ if (fwrite(spin->si_sofofr, l, (size_t)1, fd) != 0) { /* <sofofrom> */
++ (void)fprintf(stderr, "fwrite failed\n");
++ exit(1);
++ }
+
+ l = (int)STRLEN(spin->si_sofoto);
+ put_bytes(fd, (long_u)l, 2); /* <sofotolen> */
+- fwrite(spin->si_sofoto, l, (size_t)1, fd); /* <sofoto> */
++ if (fwrite(spin->si_sofoto, l, (size_t)1, fd) != 0) { /* <sofoto> */
++ (void)fprintf(stderr, "fwrite failed\n");
++ exit(1);
++ }
+ }
+
+ /* SN_WORDS: <word> ...
+@@ -8110,7 +8131,10 @@
+ l = (int)STRLEN(hi->hi_key) + 1;
+ len += l;
+ if (round == 2) /* <word> */
+- fwrite(hi->hi_key, (size_t)l, (size_t)1, fd);
++ if (fwrite(hi->hi_key, (size_t)l, (size_t)1, fd) != 0) {
++ (void)fprintf(stderr, "fwrite failed\n");
++ exit(1);
++ }
+ --todo;
+ }
+ if (round == 1)
+@@ -8126,7 +8150,10 @@
+ putc(0, fd); /* <sectionflags> */
+ l = spin->si_map.ga_len;
+ put_bytes(fd, (long_u)l, 4); /* <sectionlen> */
+- fwrite(spin->si_map.ga_data, (size_t)l, (size_t)1, fd);
++ if (fwrite(spin->si_map.ga_data, (size_t)l, (size_t)1, fd) != 0) {
++ (void)fprintf(stderr, "fwrite failed\n");
++ exit(1);
++ }
+ /* <mapstr> */
+ }
+
+@@ -8182,11 +8209,17 @@
+ {
+ p = ((char_u **)(spin->si_comppat.ga_data))[i];
+ putc((int)STRLEN(p), fd); /* <comppatlen> */
+- fwrite(p, (size_t)STRLEN(p), (size_t)1, fd);/* <comppattext> */
++ if (fwrite(p, (size_t)STRLEN(p), (size_t)1, fd) != 0) { /*
<comppattext> */
++ (void)fprintf(stderr, "fwrite failed\n");
++ exit(1);
++ }
+ }
+ /* <compflags> */
+- fwrite(spin->si_compflags, (size_t)STRLEN(spin->si_compflags),
+- (size_t)1, fd);
++ if (fwrite(spin->si_compflags, (size_t)STRLEN(spin->si_compflags),
++ (size_t)1, fd)
!= 0) {
++ (void)fprintf(stderr, "fwrite failed\n");
++ exit(1);
++ }
+ }
+
+ /* SN_NOBREAK: NOBREAK flag */
+@@ -8209,7 +8242,10 @@
+
+ l = (int)STRLEN(spin->si_syllable);
+ put_bytes(fd, (long_u)l, 4); /* <sectionlen> */
+- fwrite(spin->si_syllable, (size_t)l, (size_t)1, fd); /* <syllable> */
++ if (fwrite(spin->si_syllable, (size_t)l, (size_t)1, fd) != 0) { /*
<syllable> */
++ (void)fprintf(stderr, "fwrite failed\n");
++ exit(1);
++ }
+ }
+
+ /* end of <SECTIONS> */
+@@ -9834,7 +9870,10 @@
+ if (fd != NULL)
+ {
+ fputc(len, fd);
+- fwrite(p, (size_t)len, (size_t)1, fd);
++ if (fwrite(p, (size_t)len, (size_t)1, fd) != 0) {
++ (void)fprintf(stderr, "fwrite failed\n");
++ exit(1);
++ }
+ }
+ totlen += len;
+ }
+diff -Naur vim70.orig/src/structs.h vim70/src/structs.h
+--- vim70.orig/src/structs.h 2006-04-09 17:57:46.000000000 +0000
++++ vim70/src/structs.h 2006-10-13 13:23:05.000000000 +0000
+@@ -1082,7 +1082,7 @@
+ {
+ typval_T di_tv; /* type and value of the variable */
+ char_u di_flags; /* flags (only used for variable) */
+- char_u di_key[1]; /* key (actually longer!) */
++ char_u di_key[10]; /* key (actually longer!) */
+ };
+
+ typedef struct dictitem_S dictitem_T;
+diff -Naur vim70.orig/src/ui.c vim70/src/ui.c
+--- vim70.orig/src/ui.c 2006-03-27 19:15:09.000000000 +0000
++++ vim70/src/ui.c 2006-10-13 13:23:05.000000000 +0000
+@@ -1813,7 +1813,10 @@
+ #ifdef HAVE_DUP
+ /* Use stderr for stdin, also works for shell commands. */
+ close(0);
+- dup(2);
++ if (dup(2) != 0) {
++ (void)fprintf(stderr, "dup failed\n");
++ exit(1);
++ }
+ #else
+ read_cmd_fd = 2; /* read from stderr instead of stdin */
+ #endif
+diff -Naur vim70.orig/src/window.c vim70/src/window.c
+--- vim70.orig/src/window.c 2006-05-06 10:54:51.000000000 +0000
++++ vim70/src/window.c 2006-10-13 13:23:05.000000000 +0000
+@@ -3911,14 +3911,20 @@
+ if (mch_dirname(cwd, MAXPATHL) == OK)
+ globaldir = vim_strsave(cwd);
+ }
+- mch_chdir((char *)curwin->w_localdir);
++ if (mch_chdir((char *)curwin->w_localdir) != 0) {
++ (void)fprintf(stderr, "mch_chdir failed\n");
++ exit(1);
++ }
+ shorten_fnames(TRUE);
+ }
+ else if (globaldir != NULL)
+ {
+ /* Window doesn't have a local directory and we are not in the global
+ * directory: Change to the global directory. */
+- mch_chdir((char *)globaldir);
++ if (mch_chdir((char *)globaldir) != 0) {
++ (void)fprintf(stderr, "mch_chdir failed\n");
++ exit(1);
++ }
+ vim_free(globaldir);
+ globaldir = NULL;
+ shorten_fnames(TRUE);
--
http://linuxfromscratch.org/mailman/listinfo/patches
FAQ: http://www.linuxfromscratch.org/faq/
Unsubscribe: See the above information page