You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

46 lines
1.4 KiB

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));