[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Bug-tar] [PATCH] Robustify OLDGNU_MAGIC header initialization
From: |
Dmitry V. Levin |
Subject: |
[Bug-tar] [PATCH] Robustify OLDGNU_MAGIC header initialization |
Date: |
Tue, 14 Jul 2009 18:20:46 +0400 |
* src/create.c (write_gnu_long_link, start_header): Initialize
header.magic and header.version separately, to avoid "always
overflow destination buffer" generated by gcc in fortify mode.
Signed-off-by: Dmitry V. Levin <address@hidden>
---
Strictly speaking, original code does the right thing unless gcc is fresh
enough and _FORTIFY_SOURCE is enabled. However, gcc still does not
understand meaningful comments, and may treat buffer overflows as errors.
tar/src/create.c | 17 +++++++++++++----
1 files changed, 13 insertions(+), 4 deletions(-)
--- a/tar/src/create.c
+++ b/tar/src/create.c
@@ -577,7 +577,12 @@ write_gnu_long_link (struct tar_stat_info *st, const char
*p, char type)
GNAME_TO_CHARS (tmpname, header->header.gname);
free (tmpname);
- strcpy (header->header.magic, OLDGNU_MAGIC);
+ /* OLDGNU_MAGIC is string of 7 chars and trailing \0 */
+ strncpy (header->header.magic,
+ OLDGNU_MAGIC, sizeof(header->header.magic));
+ strncpy (header->header.version,
+ OLDGNU_MAGIC + sizeof(header->header.magic),
+ sizeof(header->header.version));
header->header.typeflag = type;
finish_header (st, header, -1);
@@ -907,9 +912,13 @@ start_header (struct tar_stat_info *st)
break;
case OLDGNU_FORMAT:
- case GNU_FORMAT: /*FIXME?*/
- /* Overwrite header->header.magic and header.version in one blow. */
- strcpy (header->header.magic, OLDGNU_MAGIC);
+ case GNU_FORMAT:
+ /* OLDGNU_MAGIC is string of 7 chars and trailing \0 */
+ strncpy (header->header.magic, OLDGNU_MAGIC,
+ sizeof(header->header.magic));
+ strncpy (header->header.version,
+ OLDGNU_MAGIC + sizeof(header->header.magic),
+ sizeof(header->header.version));
break;
case POSIX_FORMAT:
--
ldv
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Bug-tar] [PATCH] Robustify OLDGNU_MAGIC header initialization,
Dmitry V. Levin <=