]> granicus.if.org Git - yasm/commitdiff
yasm_intnum_create_charconst_nasm(): Ensure converted values from char
authorPeter Johnson <peter@tortall.net>
Tue, 31 Oct 2006 03:58:26 +0000 (03:58 -0000)
committerPeter Johnson <peter@tortall.net>
Tue, 31 Oct 2006 03:58:26 +0000 (03:58 -0000)
fit into 8 bits.

Reported by: Samuel Thibault <samuel.thibault@ens-lyon.org>

svn path=/trunk/yasm/; revision=1677

libyasm/intnum.c

index ced617aa433a9346d00c6b164c729393c5b2a56d..b444d5858eea45041e39cd4e1e62c0961cda8312 100644 (file)
@@ -196,19 +196,19 @@ yasm_intnum_create_charconst_nasm(const char *str)
 
     switch (len) {
        case 4:
-           intn->val.ul |= (unsigned long)str[3];
+           intn->val.ul |= ((unsigned long)str[3]) & 0xff;
            intn->val.ul <<= 8;
            /*@fallthrough@*/
        case 3:
-           intn->val.ul |= (unsigned long)str[2];
+           intn->val.ul |= ((unsigned long)str[2]) & 0xff;
            intn->val.ul <<= 8;
            /*@fallthrough@*/
        case 2:
-           intn->val.ul |= (unsigned long)str[1];
+           intn->val.ul |= ((unsigned long)str[1]) & 0xff;
            intn->val.ul <<= 8;
            /*@fallthrough@*/
        case 1:
-           intn->val.ul |= (unsigned long)str[0];
+           intn->val.ul |= ((unsigned long)str[0]) & 0xff;
        case 0:
            break;
        default: