annotate ffstools/tiffs-wrappers/tiffs-8m.c @ 1011:6d9b10633f10 default tip

etmsync Pirelli IMEI retrieval: fix poor use of printf() Bug reported by Vadim Yanitskiy <fixeria@osmocom.org>: the construct where a static-allocated string was passed to printf() without any format arguments causes newer compilers to report a security problem. Given that formatted output is not needed here, just fixed string output, change printf() to fputs(), and direct the error message to stderr while at it.
author Mychaela Falconia <falcon@freecalypso.org>
date Thu, 23 May 2024 17:29:57 +0000
parents 8e7f6cca385b
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
728
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1 /*
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
2 * tiffs-8m is a wrapper around tiffs similar to mokoffs: we pass the user's
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
3 * command along, together with any options, but insert the 64x15 FFS
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
4 * organization argument automatically, and translate -f into -o0x700000.
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
5 */
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
6
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
7 #include <stdio.h>
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
8 #include <stdlib.h>
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
9 #include <string.h>
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
10 #include <strings.h>
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
11 #include <unistd.h>
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
12
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
13 extern char tiffs_prog_pathname[];
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
14
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
15 char *imgfile;
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
16 char *aopt, *ropt;
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
17 int fflag, Oflag;
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
18 char **passon_argv;
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
19 int passon_argc;
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
20 int output_argc;
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
21 char **output_argv;
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
22
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
23 main(argc, argv)
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
24 char **argv;
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
25 {
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
26 extern int optind;
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
27 extern char *optarg;
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
28 int c;
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
29 char **sp, **dp;
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
30
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
31 while ((c = getopt(argc, argv, "+a:fOr:")) != EOF)
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
32 switch (c) {
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
33 case 'a':
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
34 aopt = optarg;
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
35 continue;
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
36 case 'f':
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
37 fflag++;
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
38 continue;
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
39 case 'O':
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
40 Oflag++;
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
41 continue;
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
42 case 'r':
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
43 ropt = optarg;
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
44 continue;
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
45 default:
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
46 usage: fprintf(stderr,
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
47 "usage: %s [global-options] <imgfile> <op> ...\n",
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
48 argv[0]);
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
49 exit(1);
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
50 }
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
51 if (argc - optind < 2)
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
52 goto usage;
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
53 imgfile = argv[optind++];
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
54 passon_argv = argv + optind;
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
55 passon_argc = argc - optind;
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
56
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
57 output_argc = passon_argc + 3;
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
58 if (fflag)
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
59 output_argc++;
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
60 if (Oflag)
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
61 output_argc++;
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
62 if (aopt)
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
63 output_argc += 2;
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
64 if (ropt)
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
65 output_argc += 2;
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
66 output_argv = malloc(sizeof(char *) * (output_argc + 1));
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
67 if (!output_argv) {
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
68 perror("malloc for tiffs argument list");
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
69 exit(1);
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
70 }
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
71 dp = output_argv;
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
72 *dp++ = "tiffs";
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
73 if (fflag)
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
74 *dp++ = "-o0x700000";
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
75 if (Oflag)
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
76 *dp++ = "-O";
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
77 if (aopt) {
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
78 *dp++ = "-a";
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
79 *dp++ = aopt;
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
80 }
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
81 if (ropt) {
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
82 *dp++ = "-r";
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
83 *dp++ = ropt;
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
84 }
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
85 *dp++ = imgfile;
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
86 *dp++ = "64x15";
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
87 for (sp = passon_argv; *sp; sp++)
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
88 *dp++ = *sp;
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
89 *dp = 0;
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
90 execvp(tiffs_prog_pathname, output_argv);
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
91 perror(tiffs_prog_pathname);
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
92 exit(1);
8e7f6cca385b tiffs-8m wrapper utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
93 }