Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 572418 | Differences between
and this patch

Collapse All | Expand All

(-)a/src/header.c (-5 / +18 lines)
Lines 788-793 get_header_level0(fp, hdr, data) Link Here
788
    char *data;
788
    char *data;
789
{
789
{
790
    size_t header_size;
790
    size_t header_size;
791
    ssize_t remain_size;
791
    ssize_t extend_size;
792
    ssize_t extend_size;
792
    int checksum;
793
    int checksum;
793
    int name_length;
794
    int name_length;
Lines 797-804 get_header_level0(fp, hdr, data) Link Here
797
    hdr->header_size = header_size = get_byte();
798
    hdr->header_size = header_size = get_byte();
798
    checksum = get_byte();
799
    checksum = get_byte();
799
800
800
    if (fread(data + COMMON_HEADER_SIZE,
801
    /* The data variable has been already read as COMMON_HEADER_SIZE bytes.
801
              header_size + 2 - COMMON_HEADER_SIZE, 1, fp) == 0) {
802
       So we must read the remaining header size by the header_size. */
803
    remain_size = header_size + 2 - COMMON_HEADER_SIZE;
804
    if (remain_size <= 0) {
805
        error("Invalid header size (LHarc file ?)");
806
        return FALSE;
807
    }
808
    if (fread(data + COMMON_HEADER_SIZE, remain_size, 1, fp) == 0) {
802
        error("Invalid header (LHarc file ?)");
809
        error("Invalid header (LHarc file ?)");
803
        return FALSE;   /* finish */
810
        return FALSE;   /* finish */
804
    }
811
    }
Lines 904-909 get_header_level1(fp, hdr, data) Link Here
904
    char *data;
911
    char *data;
905
{
912
{
906
    size_t header_size;
913
    size_t header_size;
914
    ssize_t remain_size;
907
    ssize_t extend_size;
915
    ssize_t extend_size;
908
    int checksum;
916
    int checksum;
909
    int name_length;
917
    int name_length;
Lines 913-920 get_header_level1(fp, hdr, data) Link Here
913
    hdr->header_size = header_size = get_byte();
921
    hdr->header_size = header_size = get_byte();
914
    checksum = get_byte();
922
    checksum = get_byte();
915
923
916
    if (fread(data + COMMON_HEADER_SIZE,
924
    /* The data variable has been already read as COMMON_HEADER_SIZE bytes.
917
              header_size + 2 - COMMON_HEADER_SIZE, 1, fp) == 0) {
925
       So we must read the remaining header size by the header_size. */
926
    remain_size = header_size + 2 - COMMON_HEADER_SIZE;
927
    if (remain_size <= 0) {
928
        error("Invalid header size (LHarc file ?)");
929
        return FALSE;
930
    }
931
    if (fread(data + COMMON_HEADER_SIZE, remain_size, 1, fp) == 0) {
918
        error("Invalid header (LHarc file ?)");
932
        error("Invalid header (LHarc file ?)");
919
        return FALSE;   /* finish */
933
        return FALSE;   /* finish */
920
    }
934
    }
921
- 

Return to bug 572418