Bug Summary

File:out/../deps/openssl/openssl/crypto/idea/i_cfb64.c
Warning:line 84, column 31
Although the value stored to 't' is used in the enclosing expression, the value is never actually read from 't'

Annotated Source Code

Press '?' to see keyboard shortcuts

clang -cc1 -cc1 -triple x86_64-unknown-linux-gnu -analyze -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name i_cfb64.c -analyzer-checker=core -analyzer-checker=apiModeling -analyzer-checker=unix -analyzer-checker=deadcode -analyzer-checker=security.insecureAPI.UncheckedReturn -analyzer-checker=security.insecureAPI.getpw -analyzer-checker=security.insecureAPI.gets -analyzer-checker=security.insecureAPI.mktemp -analyzer-checker=security.insecureAPI.mkstemp -analyzer-checker=security.insecureAPI.vfork -analyzer-checker=nullability.NullPassedToNonnull -analyzer-checker=nullability.NullReturnedFromNonnull -analyzer-output plist -w -setup-static-analyzer -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fcoverage-compilation-dir=/home/maurizio/node-v18.6.0/out -resource-dir /usr/local/lib/clang/16.0.0 -D V8_DEPRECATION_WARNINGS -D V8_IMMINENT_DEPRECATION_WARNINGS -D _GLIBCXX_USE_CXX11_ABI=1 -D NODE_OPENSSL_CONF_NAME=nodejs_conf -D NODE_OPENSSL_HAS_QUIC -D __STDC_FORMAT_MACROS -D OPENSSL_NO_PINSHARED -D OPENSSL_THREADS -D OPENSSL_NO_HW -D OPENSSL_API_COMPAT=0x10100001L -D STATIC_LEGACY -D NDEBUG -D OPENSSL_USE_NODELETE -D L_ENDIAN -D OPENSSL_BUILDING_OPENSSL -D AES_ASM -D BSAES_ASM -D CMLL_ASM -D ECP_NISTZ256_ASM -D GHASH_ASM -D KECCAK1600_ASM -D MD5_ASM -D OPENSSL_BN_ASM_GF2m -D OPENSSL_BN_ASM_MONT -D OPENSSL_BN_ASM_MONT5 -D OPENSSL_CPUID_OBJ -D OPENSSL_IA32_SSE2 -D PADLOCK_ASM -D POLY1305_ASM -D SHA1_ASM -D SHA256_ASM -D SHA512_ASM -D VPAES_ASM -D WHIRLPOOL_ASM -D X25519_ASM -D OPENSSL_PIC -D MODULESDIR="/home/maurizio/node-v18.6.0/out/Release/obj.target/deps/openssl/lib/openssl-modules" -D OPENSSLDIR="/home/maurizio/node-v18.6.0/out/Release/obj.target/deps/openssl" -D OPENSSLDIR="/etc/ssl" -D ENGINESDIR="/dev/null" -D TERMIOS -I ../deps/openssl/openssl -I ../deps/openssl/openssl/include -I ../deps/openssl/openssl/crypto -I ../deps/openssl/openssl/crypto/include -I ../deps/openssl/openssl/crypto/modes -I ../deps/openssl/openssl/crypto/ec/curve448 -I ../deps/openssl/openssl/crypto/ec/curve448/arch_32 -I ../deps/openssl/openssl/providers/common/include -I ../deps/openssl/openssl/providers/implementations/include -I ../deps/openssl/config -I ../deps/openssl/config/archs/linux-x86_64/asm -I ../deps/openssl/config/archs/linux-x86_64/asm/include -I ../deps/openssl/config/archs/linux-x86_64/asm/crypto -I ../deps/openssl/config/archs/linux-x86_64/asm/crypto/include/internal -I ../deps/openssl/config/archs/linux-x86_64/asm/providers/common/include -internal-isystem /usr/local/lib/clang/16.0.0/include -internal-isystem /usr/local/include -internal-isystem /usr/lib/gcc/x86_64-redhat-linux/8/../../../../x86_64-redhat-linux/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -O3 -Wno-unused-parameter -Wno-missing-field-initializers -Wno-old-style-declaration -fdebug-compilation-dir=/home/maurizio/node-v18.6.0/out -ferror-limit 19 -fgnuc-version=4.2.1 -vectorize-loops -vectorize-slp -analyzer-output=html -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /tmp/scan-build-2022-08-22-142216-507842-1 -x c ../deps/openssl/openssl/crypto/idea/i_cfb64.c
1/*
2 * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
3 *
4 * Licensed under the Apache License 2.0 (the "License"). You may not use
5 * this file except in compliance with the License. You can obtain a copy
6 * in the file LICENSE in the source distribution or at
7 * https://www.openssl.org/source/license.html
8 */
9
10/*
11 * IDEA low level APIs are deprecated for public use, but still ok for internal
12 * use where we're using them to implement the higher level EVP interface, as is
13 * the case here.
14 */
15#include "internal/deprecated.h"
16
17#include <openssl/idea.h>
18#include "idea_local.h"
19
20/*
21 * The input and output encrypted as though 64bit cfb mode is being used.
22 * The extra state information to record how much of the 64bit block we have
23 * used is contained in *num;
24 */
25
26void IDEA_cfb64_encrypt(const unsigned char *in, unsigned char *out,
27 long length, IDEA_KEY_SCHEDULE *schedule,
28 unsigned char *ivec, int *num, int encrypt)
29{
30 register unsigned long v0, v1, t;
31 register int n = *num;
32 register long l = length;
33 unsigned long ti[2];
34 unsigned char *iv, c, cc;
35
36 if (n < 0) {
37 *num = -1;
38 return;
39 }
40
41 iv = (unsigned char *)ivec;
42 if (encrypt) {
43 while (l--) {
44 if (n == 0) {
45 n2l(iv, v0)(v0 =((unsigned long)(*((iv)++)))<<24L, v0|=((unsigned long
)(*((iv)++)))<<16L, v0|=((unsigned long)(*((iv)++)))<<
8L, v0|=((unsigned long)(*((iv)++))))
;
46 ti[0] = v0;
47 n2l(iv, v1)(v1 =((unsigned long)(*((iv)++)))<<24L, v1|=((unsigned long
)(*((iv)++)))<<16L, v1|=((unsigned long)(*((iv)++)))<<
8L, v1|=((unsigned long)(*((iv)++))))
;
48 ti[1] = v1;
49 IDEA_encrypt((unsigned long *)ti, schedule);
50 iv = (unsigned char *)ivec;
51 t = ti[0];
52 l2n(t, iv)(*((iv)++)=(unsigned char)(((t)>>24L)&0xff), *((iv)
++)=(unsigned char)(((t)>>16L)&0xff), *((iv)++)=(unsigned
char)(((t)>> 8L)&0xff), *((iv)++)=(unsigned char)(
((t) )&0xff))
;
53 t = ti[1];
54 l2n(t, iv)(*((iv)++)=(unsigned char)(((t)>>24L)&0xff), *((iv)
++)=(unsigned char)(((t)>>16L)&0xff), *((iv)++)=(unsigned
char)(((t)>> 8L)&0xff), *((iv)++)=(unsigned char)(
((t) )&0xff))
;
55 iv = (unsigned char *)ivec;
56 }
57 c = *(in++) ^ iv[n];
58 *(out++) = c;
59 iv[n] = c;
60 n = (n + 1) & 0x07;
61 }
62 } else {
63 while (l--) {
64 if (n == 0) {
65 n2l(iv, v0)(v0 =((unsigned long)(*((iv)++)))<<24L, v0|=((unsigned long
)(*((iv)++)))<<16L, v0|=((unsigned long)(*((iv)++)))<<
8L, v0|=((unsigned long)(*((iv)++))))
;
66 ti[0] = v0;
67 n2l(iv, v1)(v1 =((unsigned long)(*((iv)++)))<<24L, v1|=((unsigned long
)(*((iv)++)))<<16L, v1|=((unsigned long)(*((iv)++)))<<
8L, v1|=((unsigned long)(*((iv)++))))
;
68 ti[1] = v1;
69 IDEA_encrypt((unsigned long *)ti, schedule);
70 iv = (unsigned char *)ivec;
71 t = ti[0];
72 l2n(t, iv)(*((iv)++)=(unsigned char)(((t)>>24L)&0xff), *((iv)
++)=(unsigned char)(((t)>>16L)&0xff), *((iv)++)=(unsigned
char)(((t)>> 8L)&0xff), *((iv)++)=(unsigned char)(
((t) )&0xff))
;
73 t = ti[1];
74 l2n(t, iv)(*((iv)++)=(unsigned char)(((t)>>24L)&0xff), *((iv)
++)=(unsigned char)(((t)>>16L)&0xff), *((iv)++)=(unsigned
char)(((t)>> 8L)&0xff), *((iv)++)=(unsigned char)(
((t) )&0xff))
;
75 iv = (unsigned char *)ivec;
76 }
77 cc = *(in++);
78 c = iv[n];
79 iv[n] = cc;
80 *(out++) = c ^ cc;
81 n = (n + 1) & 0x07;
82 }
83 }
84 v0 = v1 = ti[0] = ti[1] = t = c = cc = 0;
Although the value stored to 't' is used in the enclosing expression, the value is never actually read from 't'
85 *num = n;
86}