@@ -71,7 +71,7 @@ static void read_internal(int debug_level)
71
71
*/
72
72
static int allowChange (char * filename , time_t timestamp )
73
73
{
74
- char msg [1024 * 2 ];
74
+ char msg [OS_MAXPATH * 2 ];
75
75
sprintf (msg , "%ld %s" , timestamp , filename );
76
76
if ((syscheck .queue = StartMQ (DEFAULTQPATH , WRITE )) < 0 ) {
77
77
ErrorExit (QUEUE_FATAL , ARGV0 , DEFAULTQPATH );
@@ -208,11 +208,12 @@ int main(int argc, char **argv)
208
208
int test_config = 0 , run_foreground = 0 ;
209
209
int allow_change = 0 ;
210
210
const char * cfg = DEFAULTCPATH ;
211
- char * allow_filename = NULL ;
211
+ char allow_filename [ OS_MAXPATH ] ;
212
212
time_t allow_timestamp = 0 ;
213
213
214
214
/* Set the name */
215
215
OS_SetName (ARGV0 );
216
+ * allow_filename = '\0' ;
216
217
217
218
while ((c = getopt (argc , argv , "Vtdhfc:a:u:" )) != -1 ) {
218
219
switch (c ) {
@@ -239,7 +240,7 @@ int main(int argc, char **argv)
239
240
if (!optarg ) {
240
241
ErrorExit ("%s: -a needs a filename" , ARGV0 );
241
242
}
242
- allow_filename = optarg ;
243
+ strncpy ( allow_filename , optarg , OS_MAXPATH ) ;
243
244
allow_change = 1 ;
244
245
break ;
245
246
case 'u' :
@@ -290,12 +291,22 @@ int main(int argc, char **argv)
290
291
291
292
292
293
if (allow_change ){
293
- if (allow_filename && allow_timestamp != 0 ) {
294
- allowChange (allow_filename , allow_timestamp );
295
- exit (0 );
296
- } else {
297
- merror ("%s: WARN: Missing parameter for allow change" , ARGV0 );
294
+ if (allow_timestamp == 0 ){
295
+ merror ("%s: WARN: Missing timestamp for allow change" , ARGV0 );
298
296
exit (1 );
297
+ } else if (* allow_filename != '\0' ) {
298
+ allowChange (allow_filename , allow_timestamp );
299
+ exit (0 );
300
+ } else {
301
+ debug1 ("%s: Reading filenames from stdin, one path per line" , ARGV0 );
302
+ while (fgets (allow_filename , OS_MAXPATH , stdin )) {
303
+ /* Remove the newline character */
304
+ if (allow_filename [strlen (allow_filename ) - 1 ] == '\n' ) {
305
+ allow_filename [strlen (allow_filename ) - 1 ] = '\0' ;
306
+ }
307
+ allowChange (allow_filename , allow_timestamp );
308
+ }
309
+ exit (0 );
299
310
}
300
311
}
301
312
0 commit comments