diff options
Diffstat (limited to 'dev-games/hdl_dump/files/hdl_dump-0.8.6.20060901-fortify.patch')
-rw-r--r-- | dev-games/hdl_dump/files/hdl_dump-0.8.6.20060901-fortify.patch | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/dev-games/hdl_dump/files/hdl_dump-0.8.6.20060901-fortify.patch b/dev-games/hdl_dump/files/hdl_dump-0.8.6.20060901-fortify.patch new file mode 100644 index 000000000000..96f85d4609af --- /dev/null +++ b/dev-games/hdl_dump/files/hdl_dump-0.8.6.20060901-fortify.patch @@ -0,0 +1,45 @@ +http://bugs.gentoo.org/340145 + +fix buffer overflows in path handling. these defines should only be used +with host paths, so bumping them up to a larger value should be fine. + +--- a/common.h ++++ b/common.h +@@ -35,7 +35,8 @@ + C_START + + #if !defined (MAX_PATH) +-# define MAX_PATH 128 ++/* This needs to be at least 256 bytes -- see iin_gi_probe_path */ ++# define MAX_PATH 1024 + #endif + + +--- a/osal.h ++++ b/osal.h +@@ -62,7 +62,8 @@ typedef struct + # define OSAL_HANDLE_INIT { -1 } /* file descriptor */ + # define OSAL_IS_OPENED(x) ((x).desc != -1) + +-# define MAX_PATH 256 ++/* This needs to be at least 256 bytes -- see iin_gi_probe_path */ ++# define MAX_PATH 1024 + + #endif + typedef /*@special@*/ /*@only@*/ /*@out@*/ osal_handle_t* osal_handle_p_t; + +the magic field is 32 bytes, so strcpy-ing 32 bytes will add a 33rd NUL char. +this isn't a problem in practice as the 33rd char is "unknown_0x02", but let's +fix the issue anyways. + +--- a/apa.c ++++ b/apa.c +@@ -1270,7 +1270,7 @@ apa_initialize_ex (hio_t *hio) + set_u32 (&header.length, 128 * 1024 * 2); + set_u16 (&header.type, 0x0001); + set_ps2fs_datetime (&header.created, time (NULL)); +- strcpy (header.mbr.magic, "Sony Computer Entertainment Inc."); ++ memcpy (header.mbr.magic, "Sony Computer Entertainment Inc.", 32); + header.mbr.unknown_0x02 = 0x02; + set_ps2fs_datetime (&header.mbr.created, time (NULL)); + set_u32 (&header.checksum, apa_partition_checksum (&header)); |