View | Details | Raw Unified | Return to bug 202135
Collapse All | Expand All

(-)b/parser.c (-4 / +37 lines)
Lines 375-380 parse_config_file(struct configuration *config, Link Here
375
	char	*fields[128];
375
	char	*fields[128];
376
	int	field_count, line_num, value;
376
	int	field_count, line_num, value;
377
	int	res;
377
	int	res;
378
	int	invalid_value;
378
379
379
	TRACE_IN(parse_config_file);
380
	TRACE_IN(parse_config_file);
380
	assert(config != NULL);
381
	assert(config != NULL);
Lines 388-393 parse_config_file(struct configuration *config, Link Here
388
389
389
	res = 0;
390
	res = 0;
390
	line_num = 0;
391
	line_num = 0;
392
	invalid_value = 0;
391
	memset(buffer, 0, sizeof(buffer));
393
	memset(buffer, 0, sizeof(buffer));
392
	while ((res == 0) && (fgets(buffer, sizeof(buffer) - 1, fin) != NULL)) {
394
	while ((res == 0) && (fgets(buffer, sizeof(buffer) - 1, fin) != NULL)) {
393
		field_count = strbreak(buffer, fields, sizeof(fields));
395
		field_count = strbreak(buffer, fields, sizeof(fields));
Lines 421-432 parse_config_file(struct configuration *config, Link Here
421
			(strcmp(fields[0], "positive-time-to-live") == 0) &&
423
			(strcmp(fields[0], "positive-time-to-live") == 0) &&
422
			(check_cachename(fields[1]) == 0) &&
424
			(check_cachename(fields[1]) == 0) &&
423
			((value = get_number(fields[2], 0, -1)) != -1)) {
425
			((value = get_number(fields[2], 0, -1)) != -1)) {
426
				if (value <= 0) {
427
					invalid_value = 1;
428
					break;
429
				}
424
				set_positive_time_to_live(config,
430
				set_positive_time_to_live(config,
425
					fields[1], value);
431
					fields[1], value);
426
				continue;
432
				continue;
427
			} else if ((field_count == 3) &&
433
			} else if ((field_count == 3) &&
428
			(strcmp(fields[0], "positive-confidence-threshold") == 0) &&
434
			(strcmp(fields[0], "positive-confidence-threshold") == 0) &&
429
			((value = get_number(fields[2], 1, -1)) != -1)) {
435
			((value = get_number(fields[2], 1, -1)) != -1)) {
436
				if (value <= 0) {
437
					invalid_value = 1;
438
					break;
439
				}
430
				set_positive_confidence_threshold(config,
440
				set_positive_confidence_threshold(config,
431
					fields[1], value);
441
					fields[1], value);
432
				continue;
442
				continue;
Lines 450-461 parse_config_file(struct configuration *config, Link Here
450
			(strcmp(fields[0], "negative-time-to-live") == 0) &&
460
			(strcmp(fields[0], "negative-time-to-live") == 0) &&
451
			(check_cachename(fields[1]) == 0) &&
461
			(check_cachename(fields[1]) == 0) &&
452
			((value = get_number(fields[2], 0, -1)) != -1)) {
462
			((value = get_number(fields[2], 0, -1)) != -1)) {
463
				if (value <= 0) {
464
					invalid_value = 1;
465
					break;
466
				}
453
				set_negative_time_to_live(config,
467
				set_negative_time_to_live(config,
454
					fields[1], value);
468
					fields[1], value);
455
				continue;
469
				continue;
456
			} else if ((field_count == 3) &&
470
			} else if ((field_count == 3) &&
457
			(strcmp(fields[0], "negative-confidence-threshold") == 0) &&
471
			(strcmp(fields[0], "negative-confidence-threshold") == 0) &&
458
			((value = get_number(fields[2], 1, -1)) != -1)) {
472
			((value = get_number(fields[2], 1, -1)) != -1)) {
473
				if (value <= 0) {
474
					invalid_value = 1;
475
					break;
476
				}
459
				set_negative_confidence_threshold(config,
477
				set_negative_confidence_threshold(config,
460
					fields[1], value);
478
					fields[1], value);
461
				continue;
479
				continue;
Lines 473-478 parse_config_file(struct configuration *config, Link Here
473
			(strcmp(fields[0], "suggested-size") == 0) &&
491
			(strcmp(fields[0], "suggested-size") == 0) &&
474
			(check_cachename(fields[1]) == 0) &&
492
			(check_cachename(fields[1]) == 0) &&
475
			((value = get_number(fields[2], 1, -1)) != -1)) {
493
			((value = get_number(fields[2], 1, -1)) != -1)) {
494
				if (value <= 0) {
495
					invalid_value = 1;
496
					break;
497
				}
476
				set_suggested_size(config, fields[1], value);
498
				set_suggested_size(config, fields[1], value);
477
				continue;
499
				continue;
478
			}
500
			}
Lines 490-495 parse_config_file(struct configuration *config, Link Here
490
			(strcmp(fields[0], "keep-hot-count") == 0) &&
512
			(strcmp(fields[0], "keep-hot-count") == 0) &&
491
			(check_cachename(fields[1]) == 0) &&
513
			(check_cachename(fields[1]) == 0) &&
492
			((value = get_number(fields[2], 0, -1)) != -1)) {
514
			((value = get_number(fields[2], 0, -1)) != -1)) {
515
				if (value < 0) {
516
					invalid_value = 1;
517
					break;
518
				}
493
				set_keep_hot_count(config,
519
				set_keep_hot_count(config,
494
					fields[1], value);
520
					fields[1], value);
495
				continue;
521
				continue;
Lines 508-517 parse_config_file(struct configuration *config, Link Here
508
		default:
534
		default:
509
			break;
535
			break;
510
		}
536
		}
511
537
		if ( invalid_value == 1){
512
		LOG_ERR_2("config file parser", "error in file "
538
			LOG_ERR_2("invalid value for configuration",
513
			"%s on line %d", fname, line_num);
539
				"error in file %s on line %d",
514
		*error_str = "syntax error";
540
				fname, line_num);
541
			*error_str = "invalid value";
542
		}
543
		else {
544
			LOG_ERR_2("config file parser", "error in "
545
				"file %s on line %d", fname, line_num);
546
			*error_str = "syntax error";
547
		}
515
		*error_line = line_num;
548
		*error_line = line_num;
516
		res = -1;
549
		res = -1;
517
	}
550
	}

Return to bug 202135