]> glassweightruler.freedombox.rocks Git - Ventoy.git/blobdiff - wimboot/wimboot-2.7.3/src/xca.c
Fix the order issue in TreeView mode. (#3218)
[Ventoy.git] / wimboot / wimboot-2.7.3 / src / xca.c
index 52a691aab00520345531f0334401937f4f48c649..aaa030b14060114e02d5e690f94a4881bb032afb 100644 (file)
@@ -42,7 +42,7 @@
  */
 ssize_t xca_decompress ( const void *data, size_t len, void *buf ) {
        const void *src = data;
-       const void *end = ( src + len );
+       const void *end = ( uint8_t * ) src + len;
        uint8_t *out = buf;
        size_t out_len = 0;
        size_t out_len_threshold = 0;
@@ -67,11 +67,9 @@ ssize_t xca_decompress ( const void *data, size_t len, void *buf ) {
 
                        /* Construct symbol lengths */
                        lengths = src;
-                       src += sizeof ( *lengths );
+                       src = ( uint8_t * ) src + sizeof ( *lengths );
                        if ( src > end ) {
-                               DBG ( "XCA too short to hold Huffman lengths "
-                                     "table at input offset %#zx\n",
-                                     ( src - data ) );
+                               DBG ( "XCA too short to hold Huffman lengths table.\n");
                                return -1;
                        }
                        for ( raw = 0 ; raw < XCA_CODES ; raw++ )
@@ -113,7 +111,7 @@ ssize_t xca_decompress ( const void *data, size_t len, void *buf ) {
                        out_len++;
 
                } else if ( ( raw == XCA_END_MARKER ) &&
-                           ( src >= ( end - 1 ) ) ) {
+                           ( (uint8_t *) src >= ( ( uint8_t * ) end - 1 ) ) ) {
 
                        /* End marker symbol */
                        return out_len;
@@ -157,6 +155,5 @@ ssize_t xca_decompress ( const void *data, size_t len, void *buf ) {
                }
        }
 
-       DBG ( "XCA input overrun at output length %#zx\n", out_len );
-       return -1;
+       return out_len;
 }