[settings] Fix erroneous bit-masking in fetch_uintz_setting()
authorMichael Brown <mcb30@etherboot.org>
Wed, 20 May 2009 07:54:41 +0000 (08:54 +0100)
committerMichael Brown <mcb30@etherboot.org>
Wed, 20 May 2009 07:55:48 +0000 (08:55 +0100)
src/core/settings.c

index 3a58e39..43b463a 100644 (file)
@@ -544,7 +544,8 @@ int fetch_uint_setting ( struct settings *settings, struct setting *setting,
                return len;
 
        /* Mask off sign-extended bits */
                return len;
 
        /* Mask off sign-extended bits */
-       *value = ( svalue & ( -1UL >> ( sizeof ( long ) - len ) ) );
+       assert ( len <= ( int ) sizeof ( long ) );
+       *value = ( svalue & ( -1UL >> ( 8 * ( sizeof ( long ) - len ) ) ) );
 
        return len;
 }
 
        return len;
 }