mirror of
https://github.com/pbatard/rufus.git
synced 2024-08-14 23:57:05 +00:00
[iso] fix underflow buffers, deny optimize global var and replace strlen
This commit is contained in:
parent
0de209ee53
commit
3407d3d5f4
6 changed files with 10 additions and 7 deletions
|
@ -502,7 +502,7 @@ static int udf_extract_files(udf_t *p_udf, udf_dirent_t *p_udf_dirent, const cha
|
||||||
while ((p_udf_dirent = udf_readdir(p_udf_dirent)) != NULL) {
|
while ((p_udf_dirent = udf_readdir(p_udf_dirent)) != NULL) {
|
||||||
if (FormatStatus) goto out;
|
if (FormatStatus) goto out;
|
||||||
psz_basename = udf_get_filename(p_udf_dirent);
|
psz_basename = udf_get_filename(p_udf_dirent);
|
||||||
if (strlen(psz_basename) == 0)
|
if (psz_basename[0] != '\0')
|
||||||
continue;
|
continue;
|
||||||
length = (int)(3 + strlen(psz_path) + strlen(psz_basename) + strlen(psz_extract_dir) + 24);
|
length = (int)(3 + strlen(psz_path) + strlen(psz_basename) + strlen(psz_extract_dir) + 24);
|
||||||
psz_fullpath = (char*)calloc(sizeof(char), length);
|
psz_fullpath = (char*)calloc(sizeof(char), length);
|
||||||
|
|
|
@ -334,6 +334,7 @@ struct anchor_vol_desc_ptr_s
|
||||||
} GNUC_PACKED;
|
} GNUC_PACKED;
|
||||||
|
|
||||||
typedef struct anchor_vol_desc_ptr_s anchor_vol_desc_ptr_t;
|
typedef struct anchor_vol_desc_ptr_s anchor_vol_desc_ptr_t;
|
||||||
|
typedef struct anchor_vol_desc_ptr_s *ptr_anchor_vol_desc_ptr_t;
|
||||||
|
|
||||||
/** Volume Descriptor Pointer (ECMA 167r3 3/10.3) */
|
/** Volume Descriptor Pointer (ECMA 167r3 3/10.3) */
|
||||||
struct vol_desc_ptr_s
|
struct vol_desc_ptr_s
|
||||||
|
|
|
@ -391,6 +391,7 @@ struct iso9660_pvd_s {
|
||||||
} GNUC_PACKED;
|
} GNUC_PACKED;
|
||||||
|
|
||||||
typedef struct iso9660_pvd_s iso9660_pvd_t;
|
typedef struct iso9660_pvd_s iso9660_pvd_t;
|
||||||
|
typedef struct iso9660_pvd_s *ptr_iso9660_pvd_t;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\brief ISO-9660 Supplementary Volume Descriptor.
|
\brief ISO-9660 Supplementary Volume Descriptor.
|
||||||
|
@ -505,6 +506,7 @@ struct iso9660_svd_s {
|
||||||
} GNUC_PACKED;
|
} GNUC_PACKED;
|
||||||
|
|
||||||
typedef struct iso9660_svd_s iso9660_svd_t;
|
typedef struct iso9660_svd_s iso9660_svd_t;
|
||||||
|
typedef struct iso9660_svd_s *ptr_iso9660_svd_t;
|
||||||
|
|
||||||
PRAGMA_END_PACKED
|
PRAGMA_END_PACKED
|
||||||
|
|
||||||
|
|
|
@ -368,7 +368,7 @@ get_member_id(iso9660_t *p_iso, cdio_utf8_t **p_psz_member_id,
|
||||||
strip = false;
|
strip = false;
|
||||||
(*p_psz_member_id)[j] = pvd_member[j];
|
(*p_psz_member_id)[j] = pvd_member[j];
|
||||||
}
|
}
|
||||||
if (strlen(*p_psz_member_id) == 0) {
|
if (*p_psz_member_id[0] != '\0') {
|
||||||
free(*p_psz_member_id);
|
free(*p_psz_member_id);
|
||||||
*p_psz_member_id = NULL;
|
*p_psz_member_id = NULL;
|
||||||
return false;
|
return false;
|
||||||
|
@ -638,7 +638,7 @@ iso9660_fs_read_pvd(const CdIo_t *p_cdio, /*out*/ iso9660_pvd_t *p_pvd)
|
||||||
the part we need to save.
|
the part we need to save.
|
||||||
*/
|
*/
|
||||||
cdio_assert (sizeof(buf) >= sizeof (iso9660_pvd_t));
|
cdio_assert (sizeof(buf) >= sizeof (iso9660_pvd_t));
|
||||||
memcpy(p_pvd, buf, sizeof(iso9660_pvd_t));
|
memcpy(p_pvd, buf, sizeof(ptr_iso9660_pvd_t));
|
||||||
|
|
||||||
return check_pvd(p_pvd, CDIO_LOG_WARN);
|
return check_pvd(p_pvd, CDIO_LOG_WARN);
|
||||||
}
|
}
|
||||||
|
@ -677,7 +677,7 @@ iso9660_fs_read_superblock (CdIo_t *p_cdio,
|
||||||
the part we need to save.
|
the part we need to save.
|
||||||
*/
|
*/
|
||||||
cdio_assert (sizeof(buf) >= sizeof (iso9660_svd_t));
|
cdio_assert (sizeof(buf) >= sizeof (iso9660_svd_t));
|
||||||
memcpy(p_svd, buf, sizeof(iso9660_svd_t));
|
memcpy(p_svd, buf, sizeof(ptr_iso9660_svd_t));
|
||||||
|
|
||||||
if ( ISO_VD_SUPPLEMENTARY == from_711(p_svd->type) ) {
|
if ( ISO_VD_SUPPLEMENTARY == from_711(p_svd->type) ) {
|
||||||
if (p_svd->escape_sequences[0] == 0x25
|
if (p_svd->escape_sequences[0] == 0x25
|
||||||
|
@ -1936,7 +1936,7 @@ iso_have_rr_traverse (iso9660_t *p_iso, const iso9660_stat_t *_root,
|
||||||
p_iso->b_xa, p_iso->u_joliet_level);
|
p_iso->b_xa, p_iso->u_joliet_level);
|
||||||
have_rr = p_stat->rr.b3_rock;
|
have_rr = p_stat->rr.b3_rock;
|
||||||
if ( have_rr != yep) {
|
if ( have_rr != yep) {
|
||||||
if (strlen(splitpath[0]) == 0)
|
if (splitpath[0][0] != '\0')
|
||||||
have_rr = false;
|
have_rr = false;
|
||||||
else
|
else
|
||||||
have_rr = iso_have_rr_traverse (p_iso, p_stat, &splitpath[i_last_component],
|
have_rr = iso_have_rr_traverse (p_iso, p_stat, &splitpath[i_last_component],
|
||||||
|
|
|
@ -394,7 +394,7 @@ udf_open (const char *psz_path)
|
||||||
if (DRIVER_OP_SUCCESS != udf_read_sectors (p_udf, &data, 256, 1) )
|
if (DRIVER_OP_SUCCESS != udf_read_sectors (p_udf, &data, 256, 1) )
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
memcpy(&(p_udf->anchor_vol_desc_ptr), &data, sizeof(anchor_vol_desc_ptr_t));
|
memcpy(&(p_udf->anchor_vol_desc_ptr), &data, sizeof(ptr_anchor_vol_desc_ptr_t));
|
||||||
|
|
||||||
if (udf_checktag((udf_tag_t *)&(p_udf->anchor_vol_desc_ptr), TAGID_ANCHOR))
|
if (udf_checktag((udf_tag_t *)&(p_udf->anchor_vol_desc_ptr), TAGID_ANCHOR))
|
||||||
goto error;
|
goto error;
|
||||||
|
|
|
@ -54,7 +54,7 @@ extern loc_cmd* selected_locale;
|
||||||
extern HANDLE dialog_handle;
|
extern HANDLE dialog_handle;
|
||||||
extern BOOL is_x86_32;
|
extern BOOL is_x86_32;
|
||||||
static DWORD error_code, fido_len = 0;
|
static DWORD error_code, fido_len = 0;
|
||||||
static BOOL force_update_check = FALSE;
|
volatile static BOOL force_update_check = FALSE;
|
||||||
static const char* request_headers = "Accept-Encoding: gzip, deflate";
|
static const char* request_headers = "Accept-Encoding: gzip, deflate";
|
||||||
|
|
||||||
#if defined(__MINGW32__)
|
#if defined(__MINGW32__)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue