Bug Summary

File:out/../deps/openssl/openssl/crypto/des/pcbc_enc.c
Warning:line 71, column 12
Although the value stored to 'sin1' is used in the enclosing expression, the value is never actually read from 'sin1'

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 pcbc_enc.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/des/pcbc_enc.c
1/*
2 * Copyright 1995-2020 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 * DES low level APIs are deprecated for public use, but still ok for internal
12 * use.
13 */
14#include "internal/deprecated.h"
15
16#include "des_local.h"
17
18void DES_pcbc_encrypt(const unsigned char *input, unsigned char *output,
19 long length, DES_key_schedule *schedule,
20 DES_cblock *ivec, int enc)
21{
22 register DES_LONG sin0, sin1, xor0, xor1, tout0, tout1;
23 DES_LONG tin[2];
24 const unsigned char *in;
25 unsigned char *out, *iv;
26
27 in = input;
28 out = output;
29 iv = &(*ivec)[0];
30
31 if (enc) {
32 c2l(iv, xor0)(xor0 =((DES_LONG)(*((iv)++))) , xor0|=((DES_LONG)(*((iv)++))
)<< 8L, xor0|=((DES_LONG)(*((iv)++)))<<16L, xor0|=
((DES_LONG)(*((iv)++)))<<24L)
;
33 c2l(iv, xor1)(xor1 =((DES_LONG)(*((iv)++))) , xor1|=((DES_LONG)(*((iv)++))
)<< 8L, xor1|=((DES_LONG)(*((iv)++)))<<16L, xor1|=
((DES_LONG)(*((iv)++)))<<24L)
;
34 for (; length > 0; length -= 8) {
35 if (length >= 8) {
36 c2l(in, sin0)(sin0 =((DES_LONG)(*((in)++))) , sin0|=((DES_LONG)(*((in)++))
)<< 8L, sin0|=((DES_LONG)(*((in)++)))<<16L, sin0|=
((DES_LONG)(*((in)++)))<<24L)
;
37 c2l(in, sin1)(sin1 =((DES_LONG)(*((in)++))) , sin1|=((DES_LONG)(*((in)++))
)<< 8L, sin1|=((DES_LONG)(*((in)++)))<<16L, sin1|=
((DES_LONG)(*((in)++)))<<24L)
;
38 } else
39 c2ln(in, sin0, sin1, length){ in+=length; sin0=sin1=0; switch (length) { case 8: sin1 =((
DES_LONG)(*(--(in))))<<24L; case 7: sin1|=((DES_LONG)(*
(--(in))))<<16L; case 6: sin1|=((DES_LONG)(*(--(in))))<<
8L; case 5: sin1|=((DES_LONG)(*(--(in)))); case 4: sin0 =((DES_LONG
)(*(--(in))))<<24L; case 3: sin0|=((DES_LONG)(*(--(in))
))<<16L; case 2: sin0|=((DES_LONG)(*(--(in))))<< 8L
; case 1: sin0|=((DES_LONG)(*(--(in)))); } }
;
40 tin[0] = sin0 ^ xor0;
41 tin[1] = sin1 ^ xor1;
42 DES_encrypt1((DES_LONG *)tin, schedule, DES_ENCRYPT1);
43 tout0 = tin[0];
44 tout1 = tin[1];
45 xor0 = sin0 ^ tout0;
46 xor1 = sin1 ^ tout1;
47 l2c(tout0, out)(*((out)++)=(unsigned char)(((tout0) )&0xff), *((out)++)=
(unsigned char)(((tout0)>> 8L)&0xff), *((out)++)=(unsigned
char)(((tout0)>>16L)&0xff), *((out)++)=(unsigned char
)(((tout0)>>24L)&0xff))
;
48 l2c(tout1, out)(*((out)++)=(unsigned char)(((tout1) )&0xff), *((out)++)=
(unsigned char)(((tout1)>> 8L)&0xff), *((out)++)=(unsigned
char)(((tout1)>>16L)&0xff), *((out)++)=(unsigned char
)(((tout1)>>24L)&0xff))
;
49 }
50 } else {
51 c2l(iv, xor0)(xor0 =((DES_LONG)(*((iv)++))) , xor0|=((DES_LONG)(*((iv)++))
)<< 8L, xor0|=((DES_LONG)(*((iv)++)))<<16L, xor0|=
((DES_LONG)(*((iv)++)))<<24L)
;
52 c2l(iv, xor1)(xor1 =((DES_LONG)(*((iv)++))) , xor1|=((DES_LONG)(*((iv)++))
)<< 8L, xor1|=((DES_LONG)(*((iv)++)))<<16L, xor1|=
((DES_LONG)(*((iv)++)))<<24L)
;
53 for (; length > 0; length -= 8) {
54 c2l(in, sin0)(sin0 =((DES_LONG)(*((in)++))) , sin0|=((DES_LONG)(*((in)++))
)<< 8L, sin0|=((DES_LONG)(*((in)++)))<<16L, sin0|=
((DES_LONG)(*((in)++)))<<24L)
;
55 c2l(in, sin1)(sin1 =((DES_LONG)(*((in)++))) , sin1|=((DES_LONG)(*((in)++))
)<< 8L, sin1|=((DES_LONG)(*((in)++)))<<16L, sin1|=
((DES_LONG)(*((in)++)))<<24L)
;
56 tin[0] = sin0;
57 tin[1] = sin1;
58 DES_encrypt1((DES_LONG *)tin, schedule, DES_DECRYPT0);
59 tout0 = tin[0] ^ xor0;
60 tout1 = tin[1] ^ xor1;
61 if (length >= 8) {
62 l2c(tout0, out)(*((out)++)=(unsigned char)(((tout0) )&0xff), *((out)++)=
(unsigned char)(((tout0)>> 8L)&0xff), *((out)++)=(unsigned
char)(((tout0)>>16L)&0xff), *((out)++)=(unsigned char
)(((tout0)>>24L)&0xff))
;
63 l2c(tout1, out)(*((out)++)=(unsigned char)(((tout1) )&0xff), *((out)++)=
(unsigned char)(((tout1)>> 8L)&0xff), *((out)++)=(unsigned
char)(((tout1)>>16L)&0xff), *((out)++)=(unsigned char
)(((tout1)>>24L)&0xff))
;
64 } else
65 l2cn(tout0, tout1, out, length){ out+=length; switch (length) { case 8: *(--(out))=(unsigned
char)(((tout1)>>24L)&0xff); case 7: *(--(out))=(unsigned
char)(((tout1)>>16L)&0xff); case 6: *(--(out))=(unsigned
char)(((tout1)>> 8L)&0xff); case 5: *(--(out))=(unsigned
char)(((tout1) )&0xff); case 4: *(--(out))=(unsigned char
)(((tout0)>>24L)&0xff); case 3: *(--(out))=(unsigned
char)(((tout0)>>16L)&0xff); case 2: *(--(out))=(unsigned
char)(((tout0)>> 8L)&0xff); case 1: *(--(out))=(unsigned
char)(((tout0) )&0xff); } }
;
66 xor0 = tout0 ^ sin0;
67 xor1 = tout1 ^ sin1;
68 }
69 }
70 tin[0] = tin[1] = 0;
71 sin0 = sin1 = xor0 = xor1 = tout0 = tout1 = 0;
Although the value stored to 'sin1' is used in the enclosing expression, the value is never actually read from 'sin1'
72}