Browse code

AIX collisions in inflate64 - bb#947

git-svn: trunk@3816

aCaB authored on 2008/04/29 00:17:33
Showing 3 changed files
... ...
@@ -1,3 +1,7 @@
1
+Mon Apr 28 16:14:39 CEST 2008 (acab)
2
+------------------------------------
3
+  * libclamav/inflate64: avoid collisions on AIX - bb#947
4
+
1 5
 Mon Apr 28 16:13:33 CEST 2008 (tk)
2 6
 ----------------------------------
3 7
   * libclamav/scanners.c: don't return CL_EMAX* error codes to
... ...
@@ -416,17 +416,17 @@ int flush;
416 416
             NEEDBITS(16);
417 417
             if (
418 418
                 ((BITS(8) << 8) + (hold >> 8)) % 31) {
419
-                state->mode = BAD;
419
+                state->mode = ACAB_BAD;
420 420
                 break;
421 421
             }
422 422
             if (BITS(4) != Z_DEFLATED) {
423
-                state->mode = BAD;
423
+                state->mode = ACAB_BAD;
424 424
                 break;
425 425
             }
426 426
             DROPBITS(4);
427 427
             len = BITS(4) + 8;
428 428
             if (len > state->wbits) {
429
-                state->mode = BAD;
429
+                state->mode = ACAB_BAD;
430 430
                 break;
431 431
             }
432 432
             state->dmax = 1U << len;
... ...
@@ -472,7 +472,7 @@ int flush;
472 472
                 state->mode = TABLE;
473 473
                 break;
474 474
             case 3:
475
-                state->mode = BAD;
475
+                state->mode = ACAB_BAD;
476 476
             }
477 477
             DROPBITS(2);
478 478
             break;
... ...
@@ -480,7 +480,7 @@ int flush;
480 480
             BYTEBITS();                         /* go to byte boundary */
481 481
             NEEDBITS(32);
482 482
             if ((hold & 0xffff) != ((hold >> 16) ^ 0xffff)) {
483
-                state->mode = BAD;
483
+                state->mode = ACAB_BAD;
484 484
                 break;
485 485
             }
486 486
             state->length = (unsigned)hold & 0xffff;
... ...
@@ -515,7 +515,7 @@ int flush;
515 515
             DROPBITS(4);
516 516
 #ifndef PKZIP_BUG_WORKAROUND
517 517
             if (state->nlen > 286 || state->ndist > 30) {
518
-                state->mode = BAD;
518
+                state->mode = ACAB_BAD;
519 519
                 break;
520 520
             }
521 521
 #endif
... ...
@@ -536,7 +536,7 @@ int flush;
536 536
             ret = inflate_table(CODES, state->lens, 19, &(state->next),
537 537
                                 &(state->lenbits), state->work);
538 538
             if (ret) {
539
-                state->mode = BAD;
539
+                state->mode = ACAB_BAD;
540 540
                 break;
541 541
             }
542 542
             Tracev((stderr, "inflate:       code lengths ok\n"));
... ...
@@ -559,7 +559,7 @@ int flush;
559 559
                         NEEDBITS(this.bits + 2);
560 560
                         DROPBITS(this.bits);
561 561
                         if (state->have == 0) {
562
-                            state->mode = BAD;
562
+                            state->mode = ACAB_BAD;
563 563
                             break;
564 564
                         }
565 565
                         len = state->lens[state->have - 1];
... ...
@@ -581,7 +581,7 @@ int flush;
581 581
                         DROPBITS(7);
582 582
                     }
583 583
                     if (state->have + copy > state->nlen + state->ndist) {
584
-                        state->mode = BAD;
584
+                        state->mode = ACAB_BAD;
585 585
                         break;
586 586
                     }
587 587
                     while (copy--)
... ...
@@ -590,7 +590,7 @@ int flush;
590 590
             }
591 591
 
592 592
             /* handle error breaks in while */
593
-            if (state->mode == BAD) break;
593
+            if (state->mode == ACAB_BAD) break;
594 594
 
595 595
             /* build code tables */
596 596
             state->next = state->codes;
... ...
@@ -599,7 +599,7 @@ int flush;
599 599
             ret = inflate_table(LENS, state->lens, state->nlen, &(state->next),
600 600
                                 &(state->lenbits), state->work);
601 601
             if (ret) {
602
-                state->mode = BAD;
602
+                state->mode = ACAB_BAD;
603 603
                 break;
604 604
             }
605 605
             state->distcode = (code const FAR *)(state->next);
... ...
@@ -607,7 +607,7 @@ int flush;
607 607
             ret = inflate_table(DISTS, state->lens + state->nlen, state->ndist,
608 608
                             &(state->next), &(state->distbits), state->work);
609 609
             if (ret) {
610
-                state->mode = BAD;
610
+                state->mode = ACAB_BAD;
611 611
                 break;
612 612
             }
613 613
             Tracev((stderr, "inflate:       codes ok\n"));
... ...
@@ -650,7 +650,7 @@ int flush;
650 650
                 break;
651 651
             }
652 652
             if (this.op & 64) {
653
-                state->mode = BAD;
653
+                state->mode = ACAB_BAD;
654 654
                 break;
655 655
             }
656 656
             state->extra = (unsigned)(this.op) & 31;
... ...
@@ -681,7 +681,7 @@ int flush;
681 681
             }
682 682
             DROPBITS(this.bits);
683 683
             if (this.op & 64) {
684
-                state->mode = BAD;
684
+                state->mode = ACAB_BAD;
685 685
                 break;
686 686
             }
687 687
             Tracevv((stderr, "inflate:        val %u\n", state->offset));
... ...
@@ -696,12 +696,12 @@ int flush;
696 696
             }
697 697
 #ifdef INFLATE_STRICT
698 698
             if (state->offset > state->dmax) {
699
-                state->mode = BAD;
699
+                state->mode = ACAB_BAD;
700 700
                 break;
701 701
             }
702 702
 #endif
703 703
             if (state->offset > state->whave + out - left) {
704
-                state->mode = BAD;
704
+                state->mode = ACAB_BAD;
705 705
                 break;
706 706
             }
707 707
             Tracevv((stderr, "inflate:         distance %u\n", state->offset));
... ...
@@ -749,7 +749,7 @@ int flush;
749 749
                 out = left;
750 750
                 if ((
751 751
                      REVERSE(hold)) != state->check) {
752
-                    state->mode = BAD;
752
+                    state->mode = ACAB_BAD;
753 753
                     break;
754 754
                 }
755 755
                 INITBITS();
... ...
@@ -759,7 +759,7 @@ int flush;
759 759
         case DONE:
760 760
             ret = Z_STREAM_END;
761 761
             goto inf_leave;
762
-        case BAD:
762
+        case ACAB_BAD:
763 763
             ret = Z_DATA_ERROR;
764 764
             goto inf_leave;
765 765
         case MEM:
... ...
@@ -125,7 +125,7 @@ typedef enum {
125 125
     CHECK,      /* i: waiting for 32-bit check value */
126 126
     LENGTH,     /* i: waiting for 32-bit length (gzip) */
127 127
     DONE,       /* finished check, done -- remain here until reset */
128
-    BAD,        /* got a data error -- remain here until reset */
128
+    ACAB_BAD,        /* got a data error -- remain here until reset */
129 129
     MEM,        /* got an inflate() memory error -- remain here until reset */
130 130
     SYNC        /* looking for synchronization bytes to restart inflate() */
131 131
 } inflate_mode;