]> cvs.zerfleddert.de Git - rsbs2/blobdiff - rsb-crc.c
better corruption check by calculating the number of fill bytes
[rsbs2] / rsb-crc.c
index 719d682d33534f69e13ba0d841cc770dbab58951..8c8fbbeddbb7eeee8d296dca92d64fa210681fb7 100644 (file)
--- a/rsb-crc.c
+++ b/rsb-crc.c
@@ -116,9 +116,7 @@ unsigned int rsb_crc(unsigned int r11_crc, unsigned char *r10_buf, unsigned int
  */
 
 unsigned int rsb_crc2(unsigned char *r0_buf, unsigned int r1_buflen, unsigned int r2_magic, unsigned int *crc_out) {
-       int r8_ret = 1;
        unsigned int r4_len;
-       unsigned int r5_crc;
        unsigned int file_crc;
 
        r4_len = *(unsigned int*)(r0_buf + 0x20);
@@ -129,15 +127,12 @@ unsigned int rsb_crc2(unsigned char *r0_buf, unsigned int r1_buflen, unsigned in
        if (r1_buflen < r4_len)
                return 3; /* image to small */
        
-       r8_ret = 4;
-
-       r5_crc = ~rsb_crc(~0x0, r0_buf, r4_len);
-       *crc_out = r5_crc;
+       *crc_out = ~rsb_crc(~0x0, r0_buf, r4_len);
 
        file_crc = *((unsigned int*)(r0_buf + r4_len));
 
-       if (file_crc == r5_crc)
-               r8_ret = 0;
+       if (file_crc != *crc_out)
+               return 4;
 
-       return r8_ret;
+       return 0;
 }
Impressum, Datenschutz