cherry-pick fix for ao-cal-accel, quilt-style
[fw/altos] / debian / patches / initialize-byte-count.patch
1 From 14900d539c9d379a39ec157bb7e1914aad8fde3c Mon Sep 17 00:00:00 2001
2 From: Keith Packard <keithp@keithp.com>
3 Date: Thu, 3 Jan 2019 11:57:42 -0800
4 Subject: [PATCH] ao-tools/ao-cal-accel: Initialize byte count var 'l'
5
6 When left uninitialized, the program would randomly segfault at startup.
7
8 Signed-off-by: Keith Packard <keithp@keithp.com>
9 ---
10  ao-tools/ao-cal-accel/ao-cal-accel.c | 62 +++-------------------------
11  1 file changed, 5 insertions(+), 57 deletions(-)
12
13 diff --git a/ao-tools/ao-cal-accel/ao-cal-accel.c b/ao-tools/ao-cal-accel/ao-cal-accel.c
14 index 8a9e6347..671e4ba5 100644
15 --- a/ao-tools/ao-cal-accel/ao-cal-accel.c
16 +++ b/ao-tools/ao-cal-accel/ao-cal-accel.c
17 @@ -48,35 +48,13 @@ static void usage(char *program)
18         exit(1);
19  }
20  
21 -void
22 +static void
23  done(struct cc_usb *cc, int code)
24  {
25         cc_usb_close(cc);
26         exit (code);
27  }
28  
29 -static int
30 -ends_with(char *whole, char *suffix)
31 -{
32 -       int whole_len = strlen(whole);
33 -       int suffix_len = strlen(suffix);
34 -
35 -       if (suffix_len > whole_len)
36 -               return 0;
37 -       return strcmp(whole + whole_len - suffix_len, suffix) == 0;
38 -}
39 -
40 -static int
41 -starts_with(char *whole, char *prefix)
42 -{
43 -       int whole_len = strlen(whole);
44 -       int prefix_len = strlen(prefix);
45 -
46 -       if (prefix_len > whole_len)
47 -               return 0;
48 -       return strncmp(whole, prefix, prefix_len) == 0;
49 -}
50 -
51  static char **
52  tok(char *line) {
53         char    **strs = malloc (sizeof (char *)), *str;
54 @@ -92,16 +70,6 @@ tok(char *line) {
55         return strs;
56  }
57  
58 -static void
59 -free_strs(char **strs) {
60 -       char    *str;
61 -       int     i;
62 -
63 -       for (i = 0; (str = strs[i]) != NULL; i++)
64 -               free(str);
65 -       free(strs);
66 -}
67 -
68  struct flash {
69         struct flash    *next;
70         char            line[512];
71 @@ -130,21 +98,8 @@ flash(struct cc_usb *usb)
72         return head;
73  }
74  
75 -static void
76 -free_flash(struct flash *b) {
77 -       struct flash *n;
78 -
79 -       while (b) {
80 -               n = b->next;
81 -               free_strs(b->strs);
82 -               free(b);
83 -               b = n;
84 -       }
85 -}
86 -
87 -char **
88 +static char **
89  find_flash(struct flash *b, char *word0) {
90 -       int i;
91         for (;b; b = b->next) {
92                 if (strstr(b->line, word0))
93                         return b->strs;
94 @@ -152,7 +107,7 @@ find_flash(struct flash *b, char *word0) {
95         return NULL;
96  }
97  
98 -void
99 +static void
100  await_key(void)
101  {
102         struct termios  termios, termios_save;
103 @@ -166,12 +121,12 @@ await_key(void)
104         tcsetattr(0, TCSAFLUSH, &termios_save);
105  }
106  
107 -int
108 +static int
109  do_cal(struct cc_usb *usb) {
110         struct flash    *b;
111         char    **accel;
112         char    line[1024];
113 -       int     l;
114 +       int     l = 0;
115         int     running = 0;
116         int     worked = 1;
117  
118 @@ -230,18 +185,11 @@ int
119  main (int argc, char **argv)
120  {
121         char                    *device = NULL;
122 -       char                    *filename;
123 -       Elf                     *e;
124 -       unsigned int            s;
125 -       int                     i;
126         int                     c;
127 -       int                     tries;
128         struct cc_usb           *cc = NULL;
129         char                    *tty = NULL;
130 -       int                     success;
131         int                     verbose = 0;
132         int                     ret = 0;
133 -       int                     expected_size;
134  
135         while ((c = getopt_long(argc, argv, "rT:D:c:s:v:", options, NULL)) != -1) {
136                 switch (c) {
137 -- 
138 2.20.1
139