22
22
#include <sys/stat.h>
23
23
#include <sys/types.h>
24
24
#include <sysexits.h>
25
+ #include <errno.h>
25
26
26
27
#define UKSMDIR "/sys/kernel/mm/uksm"
27
28
#define UKSMRUN UKSMDIR"/run"
@@ -103,8 +104,17 @@ int main(int argc, char **argv)
103
104
fprintf (stderr , "Unable to open run file\n" );
104
105
exit (EX_OSFILE );
105
106
}
106
- fprintf (f , "%d" , 1 );
107
- fclose (f );
107
+ if (fprintf (f , "%d" , 1 ) < 0 )
108
+ {
109
+ fprintf (stderr , "Unable to write to run file\n" );
110
+ fclose (f );
111
+ exit (EX_OSFILE );
112
+ }
113
+ if (0 != fclose (f ))
114
+ {
115
+ fprintf (stderr , "Unable to close run file\n" );
116
+ exit (EX_OSFILE );
117
+ }
108
118
109
119
switch (verbose )
110
120
{
@@ -127,8 +137,17 @@ int main(int argc, char **argv)
127
137
fprintf (stderr , "Unable to open run file\n" );
128
138
exit (EX_OSFILE );
129
139
}
130
- fprintf (f , "%d" , 0 );
131
- fclose (f );
140
+ if (fprintf (f , "%d" , 0 ) < 0 )
141
+ {
142
+ fprintf (stderr , "Unable to write to run file\n" );
143
+ fclose (f );
144
+ exit (EX_OSFILE );
145
+ }
146
+ if (0 != fclose (f ))
147
+ {
148
+ fprintf (stderr , "Unable to close run file\n" );
149
+ exit (EX_OSFILE );
150
+ }
132
151
133
152
switch (verbose )
134
153
{
@@ -151,8 +170,19 @@ int main(int argc, char **argv)
151
170
exit (EX_OSFILE );
152
171
}
153
172
unsigned int run = 0 ;
173
+ errno = 0 ;
154
174
fscanf (f , "%d" , & run );
155
- fclose (f );
175
+ if (0 != errno )
176
+ {
177
+ fprintf (stderr , "Unable to read run file\n" );
178
+ fclose (f );
179
+ exit (EX_OSFILE );
180
+ }
181
+ if (0 != fclose (f ))
182
+ {
183
+ fprintf (stderr , "Unable to close run file\n" );
184
+ exit (EX_OSFILE );
185
+ }
156
186
157
187
switch (run )
158
188
{
@@ -182,8 +212,17 @@ int main(int argc, char **argv)
182
212
fprintf (stderr , "Unable to open run file\n" );
183
213
exit (EX_OSFILE );
184
214
}
185
- fprintf (f , "%d" , run );
186
- fclose (f );
215
+ if (fprintf (f , "%d" , run ) < 0 )
216
+ {
217
+ fprintf (stderr , "Unable to write to run file\n" );
218
+ fclose (f );
219
+ exit (EX_OSFILE );
220
+ }
221
+ if (0 != fclose (f ))
222
+ {
223
+ fprintf (stderr , "Unable to close run file\n" );
224
+ exit (EX_OSFILE );
225
+ }
187
226
188
227
switch (run )
189
228
{
0 commit comments