~ubuntu-branches/ubuntu/hardy/clamav/hardy-backports

« back to all changes in this revision

Viewing changes to libclamav/disasm.c

  • Committer: Package Import Robot
  • Author(s): Scott Kitterman
  • Date: 2011-09-12 13:44:34 UTC
  • mfrom: (0.5.43 natty-proposed)
  • Revision ID: package-import@ubuntu.com-20110912134434-2fpiteaw9ww94l7w
Tags: 0.97.2+dfsg-1ubuntu1.11.04~hardy1
* Source backport for hardy (LP: #848117):
  - Build without llvm support on lpia to fix FTBFS (not a regression as
    llvm has never built on hardy lpia)
  - Drop -T -W from apparmor_parser calls in clamav-daemon and freshclam
    postinsts since it is not supported in Hardy's apparmor
  - Drop deny rule in freshclam apparmor profile since deny is not
    supported in Hardy's apparmor
  - Drop dh_lintian from debian/rules and adjust version of debhelper
    build-dep
  - Drop build-dep and libclamav-dev depends on non-existent libtommath-dev
  - Changed Section to 'utils' for clamav-dbg package
  - Ignore test suite errors on hppa
  - Build-depend on libltdl3-dev instead of libltdl-dev

Show diffs side-by-side

added added

removed removed

Lines of Context:
1092
1092
  PUSHOP(0xb3, ADDR_MRM_GEN_EG, SIZE_WD, ADDR_NOADDR, SIZE_NOSIZE, OP_BTR),
1093
1093
  PUSHOP(0xb4, ADDR_MRM_GEN_GM, SIZE_WD, ADDR_NOADDR, SIZE_NOSIZE, OP_LFS), /* FIXME: mem size is F/D */
1094
1094
  PUSHOP(0xb5, ADDR_MRM_GEN_GM, SIZE_WD, ADDR_NOADDR, SIZE_NOSIZE, OP_LGS), /* FIXME: mem size is F/D */
1095
 
  PUSHOP(0xb6, ADDR_MRM_GEN_GE, SIZE_BYTE, ADDR_NOADDR, SIZE_NOSIZE, OP_MOVZX), /* FIXME: dsize is always B */
1096
 
  PUSHOP(0xb7, ADDR_MRM_GEN_GE, SIZE_WD, ADDR_NOADDR, SIZE_NOSIZE, OP_MOVZX), /* FIXME: dsize is always W */
 
1095
  PUSHOP(0xb6, ADDR_MRM_GEN_GE, SIZE_WD, ADDR_NOADDR, SIZE_NOSIZE, OP_MOVZX),
 
1096
  PUSHOP(0xb7, ADDR_MRM_GEN_GE, SIZE_WD, ADDR_NOADDR, SIZE_NOSIZE, OP_MOVZX),
1097
1097
  PUSHOP(0xb8, ADDR_NOADDR, SIZE_NOSIZE, ADDR_NOADDR, SIZE_NOSIZE, OP_INVALID),
1098
1098
  PUSHOP(0xb9, ADDR_NOADDR, SIZE_NOSIZE, ADDR_NOADDR, SIZE_NOSIZE, OP_UNSUP),
1099
1099
  PUSHOP(0xba, ADDR_MRM_EXTRA_1A, SIZE_WD, ADDR_IMMED, SIZE_BYTE, 24),
1100
1100
  PUSHOP(0xbb, ADDR_MRM_GEN_EG, SIZE_WD, ADDR_NOADDR, SIZE_NOSIZE, OP_BTC),
1101
1101
  PUSHOP(0xbc, ADDR_MRM_GEN_GE, SIZE_WD, ADDR_NOADDR, SIZE_NOSIZE, OP_BSF),
1102
1102
  PUSHOP(0xbd, ADDR_MRM_GEN_GE, SIZE_WD, ADDR_NOADDR, SIZE_NOSIZE, OP_BSR),
1103
 
  PUSHOP(0xbe, ADDR_MRM_GEN_GE, SIZE_BYTE, ADDR_NOADDR, SIZE_NOSIZE, OP_MOVSX), /* FIXME: dsize is always B */
1104
 
  PUSHOP(0xbf, ADDR_MRM_GEN_GE, SIZE_WD, ADDR_NOADDR, SIZE_NOSIZE, OP_MOVSX), /* FIXME: dsize is always W */
 
1103
  PUSHOP(0xbe, ADDR_MRM_GEN_GE, SIZE_WD, ADDR_NOADDR, SIZE_NOSIZE, OP_MOVSX),
 
1104
  PUSHOP(0xbf, ADDR_MRM_GEN_GE, SIZE_WD, ADDR_NOADDR, SIZE_NOSIZE, OP_MOVSX),
1105
1105
 
1106
1106
  PUSHOP(0xc0, ADDR_MRM_GEN_EG, SIZE_BYTE, ADDR_NOADDR, SIZE_NOSIZE, OP_XADD),
1107
1107
  PUSHOP(0xc1, ADDR_MRM_GEN_EG, SIZE_WD, ADDR_NOADDR, SIZE_NOSIZE, OP_XADD),
1200
1200
    case ACCESS_NOARG:
1201
1201
      break;
1202
1202
    case ACCESS_IMM:
1203
 
      hr += sprintf(hr, "%s %lx", comma, (long)s->args[i].arg.q);
1204
 
      break;
1205
1203
    case ACCESS_REL:
1206
1204
      if (s->args[i].arg.rq >=0)
1207
1205
        hr += sprintf(hr, "%s %lx", comma, (long)s->args[i].arg.q);
1418
1416
          GETBYTE(b);
1419
1417
          s->args[0].arg.q+=(uint64_t)b<<(i*8);
1420
1418
        }
1421
 
        if (x86ops[table][s->table_op].dmethod==ADDR_RELJ) {
 
1419
        /* if (x86ops[table][s->table_op].dmethod==ADDR_RELJ) { */
1422
1420
          s->args[0].arg.q<<=((8-sz)*8);
1423
1421
          s->args[0].arg.rq>>=((8-sz)*8);
1424
 
        }
 
1422
        /* } */
1425
1423
        s->state = STATE_CHECKSTYPE;
1426
1424
        continue;
1427
1425
      }
1490
1488
        s->args[reversed^1].access = ACCESS_REG;
1491
1489
        if ((s->args[reversed^1].reg = p[s->args[reversed].size][rop]) == REG_INVALID) INVALIDATE;
1492
1490
 
 
1491
        /* MOVZX size fixxup */
 
1492
        if(s->real_op == OP_MOVZX || s->real_op == OP_MOVSX)
 
1493
            s->args[reversed].size = SIZEB + (s->table_op & 1);
 
1494
 
1493
1495
        if(mod==3) {
1494
1496
          if(x86ops[table][s->table_op].dmethod==ADDR_MRM_GEN_GM || x86ops[table][s->table_op].dmethod==ADDR_MRM_EXTRA_1A_M) INVALIDATE;
1495
1497
          s->args[reversed].access = ACCESS_REG;
1623
1625
          GETBYTE(b);
1624
1626
          s->args[s->cur].arg.q+=b<<(i*8);
1625
1627
        }
 
1628
          s->args[s->cur].arg.q<<=((8-sz)*8);
 
1629
          s->args[s->cur].arg.rq>>=((8-sz)*8);
1626
1630
        s->state = STATE_FINALIZE;
1627
1631
        continue;
1628
1632
      }