Bug Summary

File:src/usr.sbin/mopd/mopchk/mopchk.c
Warning:line 129, column 16
Although the value stored to 'error' is used in the enclosing expression, the value is never actually read from 'error'

Annotated Source Code

Press '?' to see keyboard shortcuts

clang -cc1 -cc1 -triple amd64-unknown-openbsd7.0 -analyze -disable-free -disable-llvm-verifier -discard-value-names -main-file-name mopchk.c -analyzer-store=region -analyzer-opt-analyze-nested-blocks -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 1 -pic-is-pie -mframe-pointer=all -relaxed-aliasing -fno-rounding-math -mconstructor-aliases -munwind-tables -target-cpu x86-64 -target-feature +retpoline-indirect-calls -target-feature +retpoline-indirect-branches -tune-cpu generic -debugger-tuning=gdb -fcoverage-compilation-dir=/usr/src/usr.sbin/mopd/mopchk/obj -resource-dir /usr/local/lib/clang/13.0.0 -I /usr/src/usr.sbin/mopd/mopchk -I /usr/src/usr.sbin/mopd/mopchk/.. -I /usr/src/usr.sbin/mopd/mopchk/../common -internal-isystem /usr/local/lib/clang/13.0.0/include -internal-externc-isystem /usr/include -O2 -fdebug-compilation-dir=/usr/src/usr.sbin/mopd/mopchk/obj -ferror-limit 19 -fwrapv -D_RET_PROTECTOR -ret-protector -fgnuc-version=4.2.1 -vectorize-loops -vectorize-slp -fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc -fno-builtin-valloc -fno-builtin-free -fno-builtin-strdup -fno-builtin-strndup -analyzer-output=html -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /home/ben/Projects/vmm/scan-build/2022-01-12-194120-40624-1 -x c /usr/src/usr.sbin/mopd/mopchk/mopchk.c
1/* $OpenBSD: mopchk.c,v 1.19 2021/10/24 21:24:19 deraadt Exp $ */
2
3/*
4 * Copyright (c) 1995-96 Mats O Jansson. All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:
9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * 2. Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
14 *
15 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
16 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
17 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
18 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
19 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
20 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
21 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
22 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
24 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 */
26
27/*
28 * mopchk - MOP Check Utility
29 *
30 * Usage: mopchk [-av] [file ...]
31 */
32
33#include "os.h"
34#include "common/common.h"
35#include "common/mopdef.h"
36#include "common/device.h"
37#include "common/pf.h"
38#include "common/file.h"
39
40/*
41 * The list of all interfaces that are being listened to.
42 */
43struct if_info *iflist;
44
45void Usage(void);
46void mopProcess(struct if_info *, u_char *);
47
48int AllFlag = 0; /* listen on "all" interfaces */
49int VersionFlag = 0; /* Show version */
50int promisc = 0; /* promisc mode not needed */
51extern char *__progname;
52extern char version[];
53
54int
55main(argc, argv)
56 int argc;
57 char **argv;
58{
59 struct dllist dl;
60 int op, i;
61 char *filename, *p;
62 struct if_info *ii;
63 int error;
64
65 /* All error reporting is done through syslogs. */
66 openlog(__progname, LOG_PID0x01 | LOG_CONS0x02, LOG_DAEMON(3<<3));
67
68 opterr = 0;
69 while ((op = getopt(argc, argv, "av")) != -1) {
70 switch (op) {
71 case 'a':
72 AllFlag = 1;
73 break;
74 case 'v':
75 VersionFlag = 1;
76 break;
77 default:
78 Usage();
79 /* NOTREACHED */
80 }
81 }
82
83 if (VersionFlag)
84 printf("%s: Version %s\n", __progname, version);
85
86 if (AllFlag) {
87 if (VersionFlag)
88 printf("\n");
89 iflist = NULL((void *)0);
90 deviceInitAll();
91 if (iflist == NULL((void *)0)) {
92 printf("No interface\n");
93 } else {
94 printf("Interface Address\n");
95 p = NULL((void *)0);
96 for (ii = iflist; ii; ii = ii->next) {
97 if (p != NULL((void *)0)) {
98 if (strcmp(p,ii->if_name) == 0)
99 continue;
100 }
101 printf("%-9s %x:%x:%x:%x:%x:%x\n",
102 ii->if_name,
103 ii->eaddr[0],ii->eaddr[1],ii->eaddr[2],
104 ii->eaddr[3],ii->eaddr[4],ii->eaddr[5]);
105 p = ii->if_name;
106 }
107 }
108 }
109
110 if (VersionFlag || AllFlag)
111 i = 1;
112 else
113 i = 0;
114
115 while (argc > optind) {
116 if (i) printf("\n");
117 i++;
118 filename = argv[optind++];
119 printf("Checking: %s\n",filename);
120 dl.ldfd = open(filename, O_RDONLY0x0000);
121 if (dl.ldfd == -1) {
122 printf("Unknown file.\n");
123 } else {
124 if ((error = CheckElfFile(dl.ldfd)) == 0) {
125 if (GetElf32FileInfo(&dl, INFO_PRINT1) < 0 &&
126 GetElf64FileInfo(&dl, INFO_PRINT1) < 0) {
127 printf("Some failure in GetElfXXFileInfo\n");
128 }
129 } else if ((error = CheckAOutFile(dl.ldfd)) == 0) {
Although the value stored to 'error' is used in the enclosing expression, the value is never actually read from 'error'
130 if (GetAOutFileInfo(&dl, INFO_PRINT1) < 0) {
131 printf("Some failure in GetAOutFileInfo\n");
132 }
133 } else if ((error = CheckMopFile(dl.ldfd)) == 0) {
134 if (GetMopFileInfo(&dl, INFO_PRINT1) < 0) {
135 printf("Some failure in GetMopFileInfo\n");
136 }
137 };
138 }
139 (void)close(dl.ldfd);
140 }
141 return 0;
142}
143
144void
145Usage()
146{
147 fprintf(stderr(&__sF[2]), "usage: %s [-av] [file ...]\n", __progname);
148 exit(1);
149}
150
151/*
152 * Process incoming packages, NOT.
153 */
154/* ARGSUSED */
155void
156mopProcess(ii, pkt)
157 struct if_info *ii;
158 u_char *pkt;
159{
160}
161