Using char arrays for extent, offset and size results in from_733() issues when processing CE data. Also harmonize to always use stdint types where possible. --- include/cdio/rock.h | 20 ++++++++++---------- lib/iso9660/rock.c | 6 +++--- 2 files changed, 13 insertions(+), 13 deletions(-)
diff --git a/include/cdio/rock.h b/include/cdio/rock.h index 33774c7a..ff26835b 100644 --- a/include/cdio/rock.h +++ b/include/cdio/rock.h @@ -98,24 +98,24 @@ PRAGMA_BEGIN_PACKED /*! system-use-sharing protocol */ typedef struct iso_su_sp_s{ - unsigned char magic[2]; + uint8_t magic[2]; uint8_t skip; } GNUC_PACKED iso_su_sp_t; /*! system-use extension record */ typedef struct iso_su_er_s { iso711_t len_id; /**< Identifier length. Value 10?. */ - unsigned char len_des; - unsigned char len_src; + uint8_t len_des; + uint8_t len_src; iso711_t ext_ver; /**< Extension version. Value 1? */ - char data[EMPTY_ARRAY_SIZE]; + char data[EMPTY_ARRAY_SIZE]; } GNUC_PACKED iso_su_er_t; typedef struct iso_su_ce_s { - char extent[8]; - char offset[8]; - char size[8]; -} iso_su_ce_t; + iso733_t extent; + iso733_t offset; + iso733_t size; +} GNUC_PACKED iso_su_ce_t; /*! POSIX file attributes, PX. See Rock Ridge Section 4.1.2 */ typedef struct iso_rock_px_s { @@ -165,7 +165,7 @@ typedef struct iso_rock_sl_part_s { /*! Symbolic link. See Rock Ridge Section 4.1.3 */ typedef struct iso_rock_sl_s { - unsigned char flags; + uint8_t flags; iso_rock_sl_part_t link; } GNUC_PACKED iso_rock_sl_t ; @@ -184,7 +184,7 @@ typedef enum { typedef struct iso_rock_nm_s { - unsigned char flags; + uint8_t flags; char name[EMPTY_ARRAY_SIZE]; } GNUC_PACKED iso_rock_nm_t ; diff --git a/lib/iso9660/rock.c b/lib/iso9660/rock.c index ff420dca..a4353661 100644 --- a/lib/iso9660/rock.c +++ b/lib/iso9660/rock.c @@ -107,9 +107,9 @@ realloc_symlink(/*in/out*/ iso9660_stat_t *p_stat, uint8_t i_grow) void *buffer = NULL #define CHECK_CE \ - { cont_extent = from_733(*rr->u.CE.extent); \ - cont_offset = from_733(*rr->u.CE.offset); \ - cont_size = from_733(*rr->u.CE.size); \ + { cont_extent = from_733(rr->u.CE.extent); \ + cont_offset = from_733(rr->u.CE.offset); \ + cont_size = from_733(rr->u.CE.size); \ (void)cont_extent; (void)cont_offset, (void)cont_size; } #define SETUP_ROCK_RIDGE(DE,CHR,LEN) \ -- 2.39.1.windows.1