All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: kbuild@lists.01.org
Subject: lib/zstd/decompress/zstd_decompress.c:1252:44: warning: use of uninitialized value '<unknown>' [CWE-457]
Date: Mon, 25 Jul 2022 16:58:23 +0000	[thread overview]
Message-ID: <202207240145.KxyPpXBL-lkp@intel.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 16874 bytes --]

:::::: 
:::::: Manual check reason: "low confidence bisect report"
:::::: Manual check reason: "low confidence static check warning: lib/zstd/decompress/zstd_decompress.c:1252:44: warning: use of uninitialized value '<unknown>' [CWE-457] [-Wanalyzer-use-of-uninitialized-value]"
:::::: 

CC: kbuild-all(a)lists.01.org
BCC: lkp(a)intel.com
CC: linux-kernel(a)vger.kernel.org
TO: Nick Terrell <terrelln@fb.com>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   70664fc10c0d722ec79d746d8ac1db8546c94114
commit: e0c1b49f5b674cca7b10549c53b3791d0bbc90a8 lib: zstd: Upgrade to latest upstream zstd version 1.4.10
date:   9 months ago
:::::: branch date: 22 hours ago
:::::: commit date: 9 months ago
config: arm-randconfig-c002-20220718 (https://download.01.org/0day-ci/archive/20220724/202207240145.KxyPpXBL-lkp(a)intel.com/config)
compiler: arm-linux-gnueabi-gcc (GCC) 12.1.0
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=e0c1b49f5b674cca7b10549c53b3791d0bbc90a8
        git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
        git fetch --no-tags linus master
        git checkout e0c1b49f5b674cca7b10549c53b3791d0bbc90a8
        # save the config file
         ARCH=arm KBUILD_USERCFLAGS='-fanalyzer -Wno-error' 

If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@intel.com>

gcc-analyzer warnings: (new ones prefixed by >>)
   lib/zstd/decompress/zstd_decompress.c: In function 'ZSTD_loadDEntropy':
>> lib/zstd/decompress/zstd_decompress.c:1252:44: warning: use of uninitialized value '<unknown>' [CWE-457] [-Wanalyzer-use-of-uninitialized-value]
    1252 |         unsigned offcodeMaxValue = MaxOff, offcodeLog;
         |                                            ^~~~~~~~~~
     'ZSTD_decompressBegin_usingDict.part.0': events 1-2
       |
       | 1354 | size_t ZSTD_decompressBegin_usingDict(ZSTD_DCtx* dctx, const void* dict, size_t dictSize)
       |      |        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       |      |        |
       |      |        (1) entry to 'ZSTD_decompressBegin_usingDict.part.0'
       |......
       | 1357 |     if (dict && dictSize)
       |      |        ~
       |      |        |
       |      |        (2) following 'true' branch...
       |
     'ZSTD_decompressBegin_usingDict.part.0': event 3
       |
       |lib/zstd/decompress/../common/zstd_internal.h:38:22:
       |   38 | #define ZSTD_isError ERR_isError   /* for inlining */
   lib/zstd/decompress/../common/zstd_internal.h:84:7: note: in definition of macro 'RETURN_ERROR_IF'
       |   84 |   if (cond) { \
       |      |       ^~~~
   lib/zstd/decompress/zstd_decompress.c:1359:13: note: in expansion of macro 'ZSTD_isError'
       | 1359 |             ZSTD_isError(ZSTD_decompress_insertDictionary(dctx, dict, dictSize)),
       |      |             ^~~~~~~~~~~~
       |
     'ZSTD_decompressBegin_usingDict.part.0': event 4
       |
       |lib/zstd/decompress/../common/zstd_internal.h:38:22:
       |   38 | #define ZSTD_isError ERR_isError   /* for inlining */
   lib/zstd/decompress/../common/zstd_internal.h:84:7: note: in definition of macro 'RETURN_ERROR_IF'
       |   84 |   if (cond) { \
       |      |       ^~~~
   lib/zstd/decompress/zstd_decompress.c:1359:13: note: in expansion of macro 'ZSTD_isError'
       | 1359 |             ZSTD_isError(ZSTD_decompress_insertDictionary(dctx, dict, dictSize)),
       |      |             ^~~~~~~~~~~~
       |
       +--> 'ZSTD_decompress_insertDictionary': events 5-6
              |
              | 1309 | static size_t ZSTD_decompress_insertDictionary(ZSTD_DCtx* dctx, const void* dict, size_t dictSize)
              |      |               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
              |      |               |
              |      |               (5) entry to 'ZSTD_decompress_insertDictionary'
              | 1310 | {
              | 1311 |     if (dictSize < 8) return ZSTD_refDictContent(dctx, dict, dictSize);
              |      |        ~       
              |      |        |
              |      |        (6) following 'false' branch (when 'dictSize > 7')...
              |
            'ZSTD_decompress_insertDictionary': event 7
              |
              |include/asm-generic/unaligned.h:14:15:
              |   14 |         __pptr->x;                                                              \
              |      |         ~~~~~~^~~
              |      |               |
              |      |               (7) ...to here
   include/uapi/linux/byteorder/little_endian.h:34:51: note: in definition of macro '__le32_to_cpu'
              |   34 | #define __le32_to_cpu(x) ((__force __u32)(__le32)(x))
              |      |                                                   ^
   include/asm-generic/unaligned.h:32:28: note: in expansion of macro '__get_unaligned_t'
              |   32 |         return le32_to_cpu(__get_unaligned_t(__le32, p));
              |      |                            ^~~~~~~~~~~~~~~~~
              |
            'ZSTD_decompress_insertDictionary': event 8
              |
              |lib/zstd/decompress/zstd_decompress.c:1313:12:
              | 1313 |         if (magic != ZSTD_MAGIC_DICTIONARY) {
              |      |            ^
              |      |            |
              |      |            (8) following 'false' branch...
              |
            'ZSTD_decompress_insertDictionary': event 9
              |
              |include/asm-generic/unaligned.h:14:15:
              |   14 |         __pptr->x;                                                              \
              |      |         ~~~~~~^~~
              |      |               |
              |      |               (9) ...to here
   include/uapi/linux/byteorder/little_endian.h:34:51: note: in definition of macro '__le32_to_cpu'
              |   34 | #define __le32_to_cpu(x) ((__force __u32)(__le32)(x))
              |      |                                                   ^
   include/asm-generic/unaligned.h:32:28: note: in expansion of macro '__get_unaligned_t'
              |   32 |         return le32_to_cpu(__get_unaligned_t(__le32, p));
              |      |                            ^~~~~~~~~~~~~~~~~
              |
            'ZSTD_decompress_insertDictionary': event 10
              |
              |lib/zstd/decompress/zstd_decompress.c:1319:30:
              | 1319 |     {   size_t const eSize = ZSTD_loadDEntropy(&dctx->entropy, dict, dictSize);
              |      |                              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
              |      |                              |
              |      |                              (10) calling 'ZSTD_loadDEntropy' from 'ZSTD_decompress_insertDictionary'
              |
              +--> 'ZSTD_loadDEntropy': event 11
                     |
                     | 1222 | ZSTD_loadDEntropy(ZSTD_entropyDTables_t* entropy,
                     |      | ^~~~~~~~~~~~~~~~~
                     |      | |
                     |      | (11) entry to 'ZSTD_loadDEntropy'
                     |
                   'ZSTD_loadDEntropy': event 12

vim +1252 lib/zstd/decompress/zstd_decompress.c

e0c1b49f5b674c Nick Terrell 2020-09-11  1217  
e0c1b49f5b674c Nick Terrell 2020-09-11  1218  /*! ZSTD_loadDEntropy() :
e0c1b49f5b674c Nick Terrell 2020-09-11  1219   *  dict : must point at beginning of a valid zstd dictionary.
e0c1b49f5b674c Nick Terrell 2020-09-11  1220   * @return : size of entropy tables read */
e0c1b49f5b674c Nick Terrell 2020-09-11  1221  size_t
e0c1b49f5b674c Nick Terrell 2020-09-11  1222  ZSTD_loadDEntropy(ZSTD_entropyDTables_t* entropy,
e0c1b49f5b674c Nick Terrell 2020-09-11  1223                    const void* const dict, size_t const dictSize)
e0c1b49f5b674c Nick Terrell 2020-09-11  1224  {
e0c1b49f5b674c Nick Terrell 2020-09-11  1225      const BYTE* dictPtr = (const BYTE*)dict;
e0c1b49f5b674c Nick Terrell 2020-09-11  1226      const BYTE* const dictEnd = dictPtr + dictSize;
e0c1b49f5b674c Nick Terrell 2020-09-11  1227  
e0c1b49f5b674c Nick Terrell 2020-09-11  1228      RETURN_ERROR_IF(dictSize <= 8, dictionary_corrupted, "dict is too small");
e0c1b49f5b674c Nick Terrell 2020-09-11  1229      assert(MEM_readLE32(dict) == ZSTD_MAGIC_DICTIONARY);   /* dict must be valid */
e0c1b49f5b674c Nick Terrell 2020-09-11  1230      dictPtr += 8;   /* skip header = magic + dictID */
e0c1b49f5b674c Nick Terrell 2020-09-11  1231  
e0c1b49f5b674c Nick Terrell 2020-09-11  1232      ZSTD_STATIC_ASSERT(offsetof(ZSTD_entropyDTables_t, OFTable) == offsetof(ZSTD_entropyDTables_t, LLTable) + sizeof(entropy->LLTable));
e0c1b49f5b674c Nick Terrell 2020-09-11  1233      ZSTD_STATIC_ASSERT(offsetof(ZSTD_entropyDTables_t, MLTable) == offsetof(ZSTD_entropyDTables_t, OFTable) + sizeof(entropy->OFTable));
e0c1b49f5b674c Nick Terrell 2020-09-11  1234      ZSTD_STATIC_ASSERT(sizeof(entropy->LLTable) + sizeof(entropy->OFTable) + sizeof(entropy->MLTable) >= HUF_DECOMPRESS_WORKSPACE_SIZE);
e0c1b49f5b674c Nick Terrell 2020-09-11  1235      {   void* const workspace = &entropy->LLTable;   /* use fse tables as temporary workspace; implies fse tables are grouped together */
e0c1b49f5b674c Nick Terrell 2020-09-11  1236          size_t const workspaceSize = sizeof(entropy->LLTable) + sizeof(entropy->OFTable) + sizeof(entropy->MLTable);
e0c1b49f5b674c Nick Terrell 2020-09-11  1237  #ifdef HUF_FORCE_DECOMPRESS_X1
e0c1b49f5b674c Nick Terrell 2020-09-11  1238          /* in minimal huffman, we always use X1 variants */
e0c1b49f5b674c Nick Terrell 2020-09-11  1239          size_t const hSize = HUF_readDTableX1_wksp(entropy->hufTable,
e0c1b49f5b674c Nick Terrell 2020-09-11  1240                                                  dictPtr, dictEnd - dictPtr,
e0c1b49f5b674c Nick Terrell 2020-09-11  1241                                                  workspace, workspaceSize);
e0c1b49f5b674c Nick Terrell 2020-09-11  1242  #else
e0c1b49f5b674c Nick Terrell 2020-09-11  1243          size_t const hSize = HUF_readDTableX2_wksp(entropy->hufTable,
e0c1b49f5b674c Nick Terrell 2020-09-11  1244                                                  dictPtr, (size_t)(dictEnd - dictPtr),
e0c1b49f5b674c Nick Terrell 2020-09-11  1245                                                  workspace, workspaceSize);
e0c1b49f5b674c Nick Terrell 2020-09-11  1246  #endif
e0c1b49f5b674c Nick Terrell 2020-09-11  1247          RETURN_ERROR_IF(HUF_isError(hSize), dictionary_corrupted, "");
e0c1b49f5b674c Nick Terrell 2020-09-11  1248          dictPtr += hSize;
e0c1b49f5b674c Nick Terrell 2020-09-11  1249      }
e0c1b49f5b674c Nick Terrell 2020-09-11  1250  
e0c1b49f5b674c Nick Terrell 2020-09-11  1251      {   short offcodeNCount[MaxOff+1];
e0c1b49f5b674c Nick Terrell 2020-09-11 @1252          unsigned offcodeMaxValue = MaxOff, offcodeLog;
e0c1b49f5b674c Nick Terrell 2020-09-11  1253          size_t const offcodeHeaderSize = FSE_readNCount(offcodeNCount, &offcodeMaxValue, &offcodeLog, dictPtr, (size_t)(dictEnd-dictPtr));
e0c1b49f5b674c Nick Terrell 2020-09-11  1254          RETURN_ERROR_IF(FSE_isError(offcodeHeaderSize), dictionary_corrupted, "");
e0c1b49f5b674c Nick Terrell 2020-09-11  1255          RETURN_ERROR_IF(offcodeMaxValue > MaxOff, dictionary_corrupted, "");
e0c1b49f5b674c Nick Terrell 2020-09-11  1256          RETURN_ERROR_IF(offcodeLog > OffFSELog, dictionary_corrupted, "");
e0c1b49f5b674c Nick Terrell 2020-09-11  1257          ZSTD_buildFSETable( entropy->OFTable,
e0c1b49f5b674c Nick Terrell 2020-09-11  1258                              offcodeNCount, offcodeMaxValue,
e0c1b49f5b674c Nick Terrell 2020-09-11  1259                              OF_base, OF_bits,
e0c1b49f5b674c Nick Terrell 2020-09-11  1260                              offcodeLog,
e0c1b49f5b674c Nick Terrell 2020-09-11  1261                              entropy->workspace, sizeof(entropy->workspace),
e0c1b49f5b674c Nick Terrell 2020-09-11  1262                              /* bmi2 */0);
e0c1b49f5b674c Nick Terrell 2020-09-11  1263          dictPtr += offcodeHeaderSize;
e0c1b49f5b674c Nick Terrell 2020-09-11  1264      }
e0c1b49f5b674c Nick Terrell 2020-09-11  1265  
e0c1b49f5b674c Nick Terrell 2020-09-11  1266      {   short matchlengthNCount[MaxML+1];
e0c1b49f5b674c Nick Terrell 2020-09-11  1267          unsigned matchlengthMaxValue = MaxML, matchlengthLog;
e0c1b49f5b674c Nick Terrell 2020-09-11  1268          size_t const matchlengthHeaderSize = FSE_readNCount(matchlengthNCount, &matchlengthMaxValue, &matchlengthLog, dictPtr, (size_t)(dictEnd-dictPtr));
e0c1b49f5b674c Nick Terrell 2020-09-11  1269          RETURN_ERROR_IF(FSE_isError(matchlengthHeaderSize), dictionary_corrupted, "");
e0c1b49f5b674c Nick Terrell 2020-09-11  1270          RETURN_ERROR_IF(matchlengthMaxValue > MaxML, dictionary_corrupted, "");
e0c1b49f5b674c Nick Terrell 2020-09-11  1271          RETURN_ERROR_IF(matchlengthLog > MLFSELog, dictionary_corrupted, "");
e0c1b49f5b674c Nick Terrell 2020-09-11  1272          ZSTD_buildFSETable( entropy->MLTable,
e0c1b49f5b674c Nick Terrell 2020-09-11  1273                              matchlengthNCount, matchlengthMaxValue,
e0c1b49f5b674c Nick Terrell 2020-09-11  1274                              ML_base, ML_bits,
e0c1b49f5b674c Nick Terrell 2020-09-11  1275                              matchlengthLog,
e0c1b49f5b674c Nick Terrell 2020-09-11  1276                              entropy->workspace, sizeof(entropy->workspace),
e0c1b49f5b674c Nick Terrell 2020-09-11  1277                              /* bmi2 */ 0);
e0c1b49f5b674c Nick Terrell 2020-09-11  1278          dictPtr += matchlengthHeaderSize;
e0c1b49f5b674c Nick Terrell 2020-09-11  1279      }
e0c1b49f5b674c Nick Terrell 2020-09-11  1280  
e0c1b49f5b674c Nick Terrell 2020-09-11  1281      {   short litlengthNCount[MaxLL+1];
e0c1b49f5b674c Nick Terrell 2020-09-11  1282          unsigned litlengthMaxValue = MaxLL, litlengthLog;
e0c1b49f5b674c Nick Terrell 2020-09-11  1283          size_t const litlengthHeaderSize = FSE_readNCount(litlengthNCount, &litlengthMaxValue, &litlengthLog, dictPtr, (size_t)(dictEnd-dictPtr));
e0c1b49f5b674c Nick Terrell 2020-09-11  1284          RETURN_ERROR_IF(FSE_isError(litlengthHeaderSize), dictionary_corrupted, "");
e0c1b49f5b674c Nick Terrell 2020-09-11  1285          RETURN_ERROR_IF(litlengthMaxValue > MaxLL, dictionary_corrupted, "");
e0c1b49f5b674c Nick Terrell 2020-09-11  1286          RETURN_ERROR_IF(litlengthLog > LLFSELog, dictionary_corrupted, "");
e0c1b49f5b674c Nick Terrell 2020-09-11  1287          ZSTD_buildFSETable( entropy->LLTable,
e0c1b49f5b674c Nick Terrell 2020-09-11  1288                              litlengthNCount, litlengthMaxValue,
e0c1b49f5b674c Nick Terrell 2020-09-11  1289                              LL_base, LL_bits,
e0c1b49f5b674c Nick Terrell 2020-09-11  1290                              litlengthLog,
e0c1b49f5b674c Nick Terrell 2020-09-11  1291                              entropy->workspace, sizeof(entropy->workspace),
e0c1b49f5b674c Nick Terrell 2020-09-11  1292                              /* bmi2 */ 0);
e0c1b49f5b674c Nick Terrell 2020-09-11  1293          dictPtr += litlengthHeaderSize;
e0c1b49f5b674c Nick Terrell 2020-09-11  1294      }
e0c1b49f5b674c Nick Terrell 2020-09-11  1295  
e0c1b49f5b674c Nick Terrell 2020-09-11  1296      RETURN_ERROR_IF(dictPtr+12 > dictEnd, dictionary_corrupted, "");
e0c1b49f5b674c Nick Terrell 2020-09-11  1297      {   int i;
e0c1b49f5b674c Nick Terrell 2020-09-11  1298          size_t const dictContentSize = (size_t)(dictEnd - (dictPtr+12));
e0c1b49f5b674c Nick Terrell 2020-09-11  1299          for (i=0; i<3; i++) {
e0c1b49f5b674c Nick Terrell 2020-09-11  1300              U32 const rep = MEM_readLE32(dictPtr); dictPtr += 4;
e0c1b49f5b674c Nick Terrell 2020-09-11  1301              RETURN_ERROR_IF(rep==0 || rep > dictContentSize,
e0c1b49f5b674c Nick Terrell 2020-09-11  1302                              dictionary_corrupted, "");
e0c1b49f5b674c Nick Terrell 2020-09-11  1303              entropy->rep[i] = rep;
e0c1b49f5b674c Nick Terrell 2020-09-11  1304      }   }
e0c1b49f5b674c Nick Terrell 2020-09-11  1305  
e0c1b49f5b674c Nick Terrell 2020-09-11  1306      return (size_t)(dictPtr - (const BYTE*)dict);
e0c1b49f5b674c Nick Terrell 2020-09-11  1307  }
e0c1b49f5b674c Nick Terrell 2020-09-11  1308  

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp

             reply	other threads:[~2022-07-25 16:58 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-07-25 16:58 kernel test robot [this message]
  -- strict thread matches above, loose matches on Subject: below --
2022-07-19 17:26 lib/zstd/decompress/zstd_decompress.c:1252:44: warning: use of uninitialized value '<unknown>' [CWE-457] kernel test robot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202207240145.KxyPpXBL-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=kbuild@lists.01.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.