From: Dave Hart Date: Fri, 11 Sep 2009 06:55:37 +0000 (+0000) Subject: [Bug 1243] MD5auth_setkey zero-fills key from first zero octet. X-Git-Tag: NTP_4_2_5P212~4^2^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=525e92c943bcf0234d0e346872ad0df5693b3f4f;p=thirdparty%2Fntp.git [Bug 1243] MD5auth_setkey zero-fills key from first zero octet. [Bug 1295] leftover fix, do not crash on exit in free_config_trap() when "trap 1.2.3.4" is used without any further options. CID 79: kod_init_kod_db() fails to fclose(db_s) in two error paths. CID 80: attempt to quiet Coverity false positive re: leaking "reason" in main(). CID 81: savedconfig leaked in save_config(). bk: 4aa9f469lQNssJg4ktifPAqaw5wvVA --- diff --git a/ChangeLog b/ChangeLog index 59f9fee9f..a69a3042a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +* [Bug 1243] MD5auth_setkey zero-fills key from first zero octet. +* [Bug 1295] leftover fix, do not crash on exit in free_config_trap() + when "trap 1.2.3.4" is used without any further options. +* CID 79: kod_init_kod_db() fails to fclose(db_s) in two error paths. +* CID 80: attempt to quiet Coverity false positive re: leaking "reason" + in main(). +* CID 81: savedconfig leaked in save_config(). (4.2.5p210) 2009/09/06 Released by Harlan Stenn * [Bug 1294] Use OPENSSL_INC and OPENSSL_LIB macros for Windows and remove unnecessary reference to applink.c for Windows diff --git a/configure.ac b/configure.ac index c169f94e2..f700f3192 100644 --- a/configure.ac +++ b/configure.ac @@ -4256,6 +4256,26 @@ case "$ans" in esac +AC_MSG_CHECKING([if we want old session key behavior]) + +AC_ARG_ENABLE( + [bug1243-fix], + AC_HELP_STRING( + [--enable-bug1243-fix], + [+ use unmodified autokey session keys] + ), + [ans=$enableval], + [ans=yes] +) + +AC_MSG_RESULT([$ans]) + +case "$ans" in + no) + AC_DEFINE([DISABLE_BUG1243_FIX], 1, [use old autokey session key behavior?]) +esac + + AC_MSG_CHECKING([if we should use the IRIG sawtooth filter]) case "$host" in diff --git a/include/ntpd.h b/include/ntpd.h index 261fe4b0c..d234a2659 100644 --- a/include/ntpd.h +++ b/include/ntpd.h @@ -263,6 +263,18 @@ extern int config_priority; extern char *ntp_signd_socket; extern struct config_tree *cfg_tree_history; +#ifdef BC_LIST_FRAMEWORK_NOT_YET_USED +/* + * backwards compatibility flags + */ +typedef struct bc_entry_tag { + int token; + int enabled; +} bc_entry; + +extern bc_entry bc_list[]; +#endif + /* ntp_control.c */ extern int num_ctl_traps; extern keyid_t ctl_auth_keyid; /* keyid used for authenticating write requests */ diff --git a/libntp/authkeys.c b/libntp/authkeys.c index 1c9544468..da46a0ef6 100644 --- a/libntp/authkeys.c +++ b/libntp/authkeys.c @@ -312,14 +312,16 @@ MD5auth_setkey( * new value. */ sk = key_hash[KEYHASH(keyno)]; - while (sk != 0) { + while (sk != NULL) { if (keyno == sk->keyid) { + sk->flags |= KEY_MD5; + sk->keylen = min(len, sizeof(sk->k.MD5_key)); +#ifndef DISABLE_BUG1243_FIX + memcpy(sk->k.MD5_key, key, sk->keylen); +#else strncpy((char *)sk->k.MD5_key, (const char *)key, sizeof(sk->k.MD5_key)); - if ((sk->keylen = len) > sizeof(sk->k.MD5_key)) - sk->keylen = sizeof(sk->k.MD5_key); - - sk->flags |= KEY_MD5; +#endif if (cache_keyid == keyno) { cache_flags = 0; cache_keyid = 0; @@ -332,29 +334,29 @@ MD5auth_setkey( /* * Need to allocate new structure. Do it. */ - if (authnumfreekeys == 0) { - if (auth_moremem() == 0) - return; - } + if (0 == authnumfreekeys && !auth_moremem()) + return; sk = authfreekeys; authfreekeys = sk->next; authnumfreekeys--; - strncpy((char *)sk->k.MD5_key, (const char *)key, - sizeof(sk->k.MD5_key)); - if ((sk->keylen = len) > sizeof(sk->k.MD5_key)) - sk->keylen = sizeof(sk->k.MD5_key); - sk->keyid = keyno; sk->flags = KEY_MD5; sk->lifetime = 0; + sk->keylen = min(len, sizeof(sk->k.MD5_key)); +#ifndef DISABLE_BUG1243_FIX + memcpy(sk->k.MD5_key, key, sk->keylen); +#else + strncpy((char *)sk->k.MD5_key, (const char *)key, + sizeof(sk->k.MD5_key)); +#endif sk->next = key_hash[KEYHASH(keyno)]; key_hash[KEYHASH(keyno)] = sk; authnumkeys++; - return; } - + + /* * auth_delkeys - delete all known keys, in preparation for rereading * the keys file (presumably) diff --git a/ntpd/ntp_config.c b/ntpd/ntp_config.c index dfa35ea15..39699b69b 100644 --- a/ntpd/ntp_config.c +++ b/ntpd/ntp_config.c @@ -199,9 +199,27 @@ extern char *leapseconds_file_name; /*name of the leapseconds file */ extern unsigned int qos; /* QoS setting */ #endif /* HAVE_IPTOS_SUPPORT */ +#ifdef BC_LIST_FRAMEWORK_NOT_YET_USED +/* + * backwards compatibility flags + */ +bc_entry bc_list[] = { + { T_Bc_bugXXXX, 1 } /* default enabled */ +}; + +/* + * declare an int pointer for each flag for quick testing without + * walking bc_list. If the pointer is consumed by libntp rather + * than ntpd, declare it in a libntp source file pointing to storage + * initialized with the appropriate value for other libntp clients, and + * redirect it to point into bc_list during ntpd startup. + */ +int *p_bcXXXX_enabled = &bc_list[0].enabled; +#endif + /* FUNCTION PROTOTYPES */ -static void call_proto_config_from_list(queue *flag_list, int able_flag); +static void apply_enable_disable(queue *q, int enable); static void init_syntax_tree(struct config_tree *); #ifdef DEBUG @@ -301,25 +319,6 @@ static void do_resolve_internal(void); * ---------------------------- */ -static void -call_proto_config_from_list( - queue *flag_list, - int able - ) -{ - int flag; - struct attr_val *curr_flag; - - curr_flag = queue_head(flag_list); - while (curr_flag != NULL) { - flag = curr_flag->value.i; - if (flag) - proto_config(flag, able, 0., NULL); - curr_flag = next_node(curr_flag); - } -} - - #ifdef DEBUG static void free_auth_node( @@ -343,6 +342,7 @@ free_auth_node( } #endif /* DEBUG */ + static void init_syntax_tree( struct config_tree *ptree @@ -512,6 +512,7 @@ dump_config_tree( void *opts = NULL; char refid[5]; char timestamp[80]; + int enable; printf("dump_config_tree(%p)\n", ptree); @@ -741,59 +742,17 @@ dump_config_tree( if (ptree->auth.request_key) fprintf(df, "requestkey %d\n", ptree->auth.request_key); - list_ptr = queue_head(ptree->enable_opts); - if (list_ptr != NULL) { - - for(; list_ptr != NULL; - list_ptr = next_node(list_ptr)) { - - atrv = (struct attr_val *) list_ptr; + /* dump enable list, then disable list */ + for (enable = 1; enable >= 0; enable--) { - fprintf(df, "enable"); + list_ptr = (enable) + ? queue_head(ptree->enable_opts) + : queue_head(ptree->disable_opts); - switch (atrv->value.i) { - default: - fprintf(df, "\n# dump error:\n" - "# unknown enable token %d\n" - "enable", atrv->value.i); - break; - - case PROTO_AUTHENTICATE: - fprintf(df, " auth"); - break; - - case PROTO_BROADCLIENT: - fprintf(df, " bclient"); - break; - - case PROTO_CAL: - fprintf(df, " calibrate"); - break; - - case PROTO_KERNEL: - fprintf(df, " kernel"); - break; - - case PROTO_MONITOR: - fprintf(df, " monitor"); - break; - - case PROTO_NTP: - fprintf(df, " ntp"); - break; - - case PROTO_FILEGEN: - fprintf(df, " stats"); - break; - } - } - fprintf(df, "\n"); - } - - list_ptr = queue_head(ptree->disable_opts); - if (list_ptr != NULL) { - - fprintf(df, "disable"); + if (list_ptr != NULL) + fprintf(df, (enable) + ? "enable" + : "disable"); for(; list_ptr != NULL; list_ptr = next_node(list_ptr)) { @@ -803,35 +762,38 @@ dump_config_tree( switch (atrv->value.i) { default: fprintf(df, "\n# dump error:\n" - "# unknown disable token %d\n" - "disable", atrv->value.i); + "# unknown enable/disable token %d\n" + "%s", atrv->value.i, + (enable) + ? "enable" + : "disable"); break; - case PROTO_AUTHENTICATE: + case T_Auth: fprintf(df, " auth"); break; - case PROTO_BROADCLIENT: + case T_Bclient: fprintf(df, " bclient"); break; - case PROTO_CAL: + case T_Calibrate: fprintf(df, " calibrate"); break; - case PROTO_KERNEL: + case T_Kernel: fprintf(df, " kernel"); break; - case PROTO_MONITOR: + case T_Monitor: fprintf(df, " monitor"); break; - case PROTO_NTP: + case T_Ntp: fprintf(df, " ntp"); break; - case PROTO_FILEGEN: + case T_Stats: fprintf(df, " stats"); break; } @@ -839,6 +801,7 @@ dump_config_tree( fprintf(df, "\n"); } + list_ptr = queue_head(ptree->orphan_cmds); if (list_ptr != NULL) { @@ -2713,13 +2676,88 @@ free_config_tinker( #endif /* DEBUG */ +static void +apply_enable_disable( + queue * q, + int enable + ) +{ + struct attr_val *curr_flag; + int option; +#ifdef BC_LIST_FRAMEWORK_NOT_YET_USED + bc_entry *pentry; +#endif + + curr_flag = queue_head(q); + while (curr_flag != NULL) { + + option = curr_flag->value.i; + switch (option) { + + default: + msyslog(LOG_ERR, + "can not apply enable/disable token %d, unknown", + option); + break; + + case T_Auth: + proto_config(PROTO_AUTHENTICATE, enable, 0., NULL); + break; + + case T_Bclient: + proto_config(PROTO_BROADCLIENT, enable, 0., NULL); + break; + + case T_Calibrate: + proto_config(PROTO_CAL, enable, 0., NULL); + break; + + case T_Kernel: + proto_config(PROTO_KERNEL, enable, 0., NULL); + break; + + case T_Monitor: + proto_config(PROTO_MONITOR, enable, 0., NULL); + break; + + case T_Ntp: + proto_config(PROTO_NTP, enable, 0., NULL); + break; + + case T_Stats: + proto_config(PROTO_FILEGEN, enable, 0., NULL); + break; + +#ifdef BC_LIST_FRAMEWORK_NOT_YET_USED + case T_Bc_bugXXXX: + pentry = bc_list; + while (pentry->token) { + if (pentry->token == option) + break; + pentry++; + } + if (!pentry->token) { + msyslog(LOG_ERR, + "compat token %d not in bc_list[]", + option); + continue; + } + pentry->enabled = enable; + break; +#endif + } + curr_flag = next_node(curr_flag); + } +} + + static void config_system_opts( struct config_tree *ptree ) { - call_proto_config_from_list(ptree->enable_opts, 1); - call_proto_config_from_list(ptree->disable_opts, 0); + apply_enable_disable(ptree->enable_opts, 1); + apply_enable_disable(ptree->disable_opts, 0); } @@ -3063,7 +3101,7 @@ free_config_trap( struct address_node *addr_node; while (NULL != (curr_trap = dequeue(ptree->trap))) { - while (NULL != + while (curr_trap->options != NULL && NULL != (curr_opt = dequeue(curr_trap->options))) { if (T_Interface == curr_opt->attr) { diff --git a/ntpd/ntp_control.c b/ntpd/ntp_control.c index 5f123b81c..296351db1 100644 --- a/ntpd/ntp_control.c +++ b/ntpd/ntp_control.c @@ -635,11 +635,11 @@ save_config( * ntpq -c "rv 0 savedconfig" */ octets = sizeof(savedconfig_eq) + strlen(filename) + 1; - savedconfig = emalloc(sizeof(savedconfig_eq) - + strlen(filename) + 1); + savedconfig = emalloc(octets); snprintf(savedconfig, octets, "%s%s", savedconfig_eq, filename); set_sys_var(savedconfig, octets, RO); + free(savedconfig); } if (NULL != fptr) diff --git a/ntpd/ntp_parser.c b/ntpd/ntp_parser.c index 82d0d983c..862adcc41 100644 --- a/ntpd/ntp_parser.c +++ b/ntpd/ntp_parser.c @@ -869,25 +869,25 @@ static const yytype_uint16 yyrline[] = 341, 350, 351, 352, 353, 354, 358, 359, 360, 364, 368, 369, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 396, 404, 405, - 415, 417, 419, 430, 432, 434, 442, 444, 446, 448, - 450, 455, 457, 461, 462, 466, 468, 470, 472, 474, - 476, 486, 491, 492, 496, 498, 500, 502, 504, 506, - 508, 510, 512, 514, 516, 526, 528, 530, 538, 539, - 543, 545, 547, 549, 551, 553, 555, 557, 562, 563, - 567, 569, 571, 572, 573, 574, 578, 579, 580, 581, - 582, 583, 584, 593, 597, 602, 607, 620, 633, 641, - 642, 646, 647, 648, 649, 650, 651, 652, 653, 654, - 655, 656, 657, 658, 659, 663, 664, 668, 669, 670, - 678, 683, 684, 688, 690, 692, 694, 696, 698, 700, - 702, 711, 713, 718, 719, 723, 724, 725, 726, 727, - 728, 730, 738, 742, 743, 747, 748, 749, 750, 751, - 752, 753, 761, 777, 783, 785, 787, 789, 791, 794, - 796, 798, 801, 803, 805, 807, 809, 811, 813, 817, - 819, 823, 827, 829, 835, 837, 841, 842, 847, 848, - 852, 872, 873, 877, 878, 882, 883, 887, 896, 897, - 901, 902, 911, 926, 930, 931, 935, 936, 940, 941, - 945, 950, 954, 958, 959, 963, 968, 969, 973, 975, - 977, 979, 981 + 415, 417, 419, 430, 432, 434, 439, 441, 443, 445, + 447, 452, 454, 458, 459, 463, 465, 467, 469, 471, + 473, 483, 488, 489, 493, 495, 497, 499, 501, 503, + 505, 507, 509, 511, 513, 523, 525, 527, 535, 536, + 540, 542, 544, 546, 548, 550, 552, 554, 559, 560, + 564, 566, 568, 569, 570, 571, 575, 576, 577, 578, + 579, 580, 581, 590, 594, 599, 604, 617, 630, 638, + 639, 643, 644, 645, 646, 647, 648, 649, 650, 651, + 652, 653, 654, 655, 656, 660, 661, 665, 666, 667, + 675, 680, 681, 685, 687, 689, 691, 693, 695, 697, + 699, 708, 710, 715, 716, 720, 721, 722, 723, 724, + 725, 726, 734, 738, 739, 743, 744, 745, 746, 747, + 748, 749, 757, 773, 779, 781, 783, 785, 787, 790, + 792, 794, 797, 799, 801, 803, 805, 807, 809, 813, + 815, 819, 823, 825, 831, 833, 837, 838, 843, 844, + 848, 868, 869, 873, 874, 878, 879, 883, 892, 893, + 897, 898, 907, 922, 926, 927, 931, 932, 936, 937, + 941, 946, 950, 954, 955, 959, 964, 965, 969, 971, + 973, 975, 977 }; #endif @@ -2373,228 +2373,225 @@ yyreduce: /* Line 1455 of yacc.c */ #line 435 "ntp_parser.y" { - if (cfgt.auth.crypto_cmd_list != NULL) - append_queue(cfgt.auth.crypto_cmd_list, (yyvsp[(2) - (2)].Queue)); - else - cfgt.auth.crypto_cmd_list = (yyvsp[(2) - (2)].Queue); cryptosw++; + append_queue(cfgt.auth.crypto_cmd_list, (yyvsp[(2) - (2)].Queue)); } break; case 56: /* Line 1455 of yacc.c */ -#line 443 "ntp_parser.y" +#line 440 "ntp_parser.y" { cfgt.auth.keys = (yyvsp[(2) - (2)].String); } break; case 57: /* Line 1455 of yacc.c */ -#line 445 "ntp_parser.y" +#line 442 "ntp_parser.y" { cfgt.auth.keysdir = (yyvsp[(2) - (2)].String); } break; case 58: /* Line 1455 of yacc.c */ -#line 447 "ntp_parser.y" +#line 444 "ntp_parser.y" { cfgt.auth.request_key = (yyvsp[(2) - (2)].Integer); } break; case 59: /* Line 1455 of yacc.c */ -#line 449 "ntp_parser.y" +#line 446 "ntp_parser.y" { cfgt.auth.trusted_key_list = (yyvsp[(2) - (2)].Queue); } break; case 60: /* Line 1455 of yacc.c */ -#line 451 "ntp_parser.y" +#line 448 "ntp_parser.y" { cfgt.auth.ntp_signd_socket = (yyvsp[(2) - (2)].String); } break; case 62: /* Line 1455 of yacc.c */ -#line 457 "ntp_parser.y" - { (yyval.Queue) = NULL; } +#line 454 "ntp_parser.y" + { (yyval.Queue) = create_queue(); } break; case 63: /* Line 1455 of yacc.c */ -#line 461 "ntp_parser.y" +#line 458 "ntp_parser.y" { (yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), (yyvsp[(2) - (2)].Attr_val)); } break; case 64: /* Line 1455 of yacc.c */ -#line 462 "ntp_parser.y" +#line 459 "ntp_parser.y" { (yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (1)].Attr_val)); } break; case 65: /* Line 1455 of yacc.c */ -#line 467 "ntp_parser.y" +#line 464 "ntp_parser.y" { (yyval.Attr_val) = create_attr_sval(CRYPTO_CONF_PRIV, (yyvsp[(2) - (2)].String)); } break; case 66: /* Line 1455 of yacc.c */ -#line 469 "ntp_parser.y" +#line 466 "ntp_parser.y" { (yyval.Attr_val) = create_attr_sval(CRYPTO_CONF_IDENT, (yyvsp[(2) - (2)].String)); } break; case 67: /* Line 1455 of yacc.c */ -#line 471 "ntp_parser.y" +#line 468 "ntp_parser.y" { (yyval.Attr_val) = create_attr_sval(CRYPTO_CONF_PW, (yyvsp[(2) - (2)].String)); } break; case 68: /* Line 1455 of yacc.c */ -#line 473 "ntp_parser.y" +#line 470 "ntp_parser.y" { (yyval.Attr_val) = create_attr_sval(CRYPTO_CONF_RAND, (yyvsp[(2) - (2)].String)); } break; case 69: /* Line 1455 of yacc.c */ -#line 475 "ntp_parser.y" +#line 472 "ntp_parser.y" { cfgt.auth.revoke = (yyvsp[(2) - (2)].Integer); } break; case 70: /* Line 1455 of yacc.c */ -#line 477 "ntp_parser.y" +#line 474 "ntp_parser.y" { (yyval.Attr_val) = create_attr_sval(CRYPTO_CONF_SIGN, (yyvsp[(2) - (2)].String)); } break; case 71: /* Line 1455 of yacc.c */ -#line 487 "ntp_parser.y" +#line 484 "ntp_parser.y" { append_queue(cfgt.orphan_cmds,(yyvsp[(2) - (2)].Queue)); } break; case 72: /* Line 1455 of yacc.c */ -#line 491 "ntp_parser.y" +#line 488 "ntp_parser.y" { (yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), (yyvsp[(2) - (2)].Attr_val)); } break; case 73: /* Line 1455 of yacc.c */ -#line 492 "ntp_parser.y" +#line 489 "ntp_parser.y" { (yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (1)].Attr_val)); } break; case 74: /* Line 1455 of yacc.c */ -#line 497 "ntp_parser.y" +#line 494 "ntp_parser.y" { (yyval.Attr_val) = create_attr_dval(PROTO_CEILING, (double)(yyvsp[(2) - (2)].Integer)); } break; case 75: /* Line 1455 of yacc.c */ -#line 499 "ntp_parser.y" +#line 496 "ntp_parser.y" { (yyval.Attr_val) = create_attr_dval(PROTO_FLOOR, (double)(yyvsp[(2) - (2)].Integer)); } break; case 76: /* Line 1455 of yacc.c */ -#line 501 "ntp_parser.y" +#line 498 "ntp_parser.y" { (yyval.Attr_val) = create_attr_dval(PROTO_COHORT, (double)(yyvsp[(2) - (2)].Integer)); } break; case 77: /* Line 1455 of yacc.c */ -#line 503 "ntp_parser.y" +#line 500 "ntp_parser.y" { (yyval.Attr_val) = create_attr_dval(PROTO_ORPHAN, (double)(yyvsp[(2) - (2)].Integer)); } break; case 78: /* Line 1455 of yacc.c */ -#line 505 "ntp_parser.y" +#line 502 "ntp_parser.y" { (yyval.Attr_val) = create_attr_dval(PROTO_MINDISP, (yyvsp[(2) - (2)].Double)); } break; case 79: /* Line 1455 of yacc.c */ -#line 507 "ntp_parser.y" +#line 504 "ntp_parser.y" { (yyval.Attr_val) = create_attr_dval(PROTO_MAXDIST, (yyvsp[(2) - (2)].Double)); } break; case 80: /* Line 1455 of yacc.c */ -#line 509 "ntp_parser.y" +#line 506 "ntp_parser.y" { (yyval.Attr_val) = create_attr_dval(PROTO_MINCLOCK, (yyvsp[(2) - (2)].Double)); } break; case 81: /* Line 1455 of yacc.c */ -#line 511 "ntp_parser.y" +#line 508 "ntp_parser.y" { (yyval.Attr_val) = create_attr_dval(PROTO_MAXCLOCK, (yyvsp[(2) - (2)].Double)); } break; case 82: /* Line 1455 of yacc.c */ -#line 513 "ntp_parser.y" +#line 510 "ntp_parser.y" { (yyval.Attr_val) = create_attr_dval(PROTO_MINSANE, (double)(yyvsp[(2) - (2)].Integer)); } break; case 83: /* Line 1455 of yacc.c */ -#line 515 "ntp_parser.y" +#line 512 "ntp_parser.y" { (yyval.Attr_val) = create_attr_dval(PROTO_BEACON, (double)(yyvsp[(2) - (2)].Integer)); } break; case 84: /* Line 1455 of yacc.c */ -#line 517 "ntp_parser.y" +#line 514 "ntp_parser.y" { (yyval.Attr_val) = create_attr_dval(PROTO_MAXHOP, (double)(yyvsp[(2) - (2)].Integer)); } break; case 85: /* Line 1455 of yacc.c */ -#line 527 "ntp_parser.y" +#line 524 "ntp_parser.y" { append_queue(cfgt.stats_list, (yyvsp[(2) - (2)].Queue)); } break; case 86: /* Line 1455 of yacc.c */ -#line 529 "ntp_parser.y" +#line 526 "ntp_parser.y" { cfgt.stats_dir = (yyvsp[(2) - (2)].String); } break; case 87: /* Line 1455 of yacc.c */ -#line 531 "ntp_parser.y" +#line 528 "ntp_parser.y" { enqueue(cfgt.filegen_opts, create_filegen_node((yyvsp[(2) - (3)].VoidPtr), (yyvsp[(3) - (3)].Queue))); @@ -2604,182 +2601,182 @@ yyreduce: case 88: /* Line 1455 of yacc.c */ -#line 538 "ntp_parser.y" +#line 535 "ntp_parser.y" { (yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), (yyvsp[(2) - (2)].VoidPtr)); } break; case 89: /* Line 1455 of yacc.c */ -#line 539 "ntp_parser.y" +#line 536 "ntp_parser.y" { (yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (1)].VoidPtr)); } break; case 90: /* Line 1455 of yacc.c */ -#line 544 "ntp_parser.y" +#line 541 "ntp_parser.y" { (yyval.VoidPtr) = create_pval("clockstats"); } break; case 91: /* Line 1455 of yacc.c */ -#line 546 "ntp_parser.y" +#line 543 "ntp_parser.y" { (yyval.VoidPtr) = create_pval("cryptostats"); } break; case 92: /* Line 1455 of yacc.c */ -#line 548 "ntp_parser.y" +#line 545 "ntp_parser.y" { (yyval.VoidPtr) = create_pval("loopstats"); } break; case 93: /* Line 1455 of yacc.c */ -#line 550 "ntp_parser.y" +#line 547 "ntp_parser.y" { (yyval.VoidPtr) = create_pval("peerstats"); } break; case 94: /* Line 1455 of yacc.c */ -#line 552 "ntp_parser.y" +#line 549 "ntp_parser.y" { (yyval.VoidPtr) = create_pval("rawstats"); } break; case 95: /* Line 1455 of yacc.c */ -#line 554 "ntp_parser.y" +#line 551 "ntp_parser.y" { (yyval.VoidPtr) = create_pval("sysstats"); } break; case 96: /* Line 1455 of yacc.c */ -#line 556 "ntp_parser.y" +#line 553 "ntp_parser.y" { (yyval.VoidPtr) = create_pval("timingstats"); } break; case 97: /* Line 1455 of yacc.c */ -#line 558 "ntp_parser.y" +#line 555 "ntp_parser.y" { (yyval.VoidPtr) = create_pval("protostats"); } break; case 98: /* Line 1455 of yacc.c */ -#line 562 "ntp_parser.y" +#line 559 "ntp_parser.y" { (yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), (yyvsp[(2) - (2)].Attr_val)); } break; case 99: /* Line 1455 of yacc.c */ -#line 563 "ntp_parser.y" +#line 560 "ntp_parser.y" { (yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (1)].Attr_val)); } break; case 100: /* Line 1455 of yacc.c */ -#line 568 "ntp_parser.y" +#line 565 "ntp_parser.y" { (yyval.Attr_val) = create_attr_sval(T_File, (yyvsp[(2) - (2)].String)); } break; case 101: /* Line 1455 of yacc.c */ -#line 570 "ntp_parser.y" +#line 567 "ntp_parser.y" { (yyval.Attr_val) = create_attr_ival(T_Type, (yyvsp[(2) - (2)].Integer)); } break; case 102: /* Line 1455 of yacc.c */ -#line 571 "ntp_parser.y" +#line 568 "ntp_parser.y" { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[(1) - (1)].Integer)); } break; case 103: /* Line 1455 of yacc.c */ -#line 572 "ntp_parser.y" +#line 569 "ntp_parser.y" { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[(1) - (1)].Integer)); } break; case 104: /* Line 1455 of yacc.c */ -#line 573 "ntp_parser.y" +#line 570 "ntp_parser.y" { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[(1) - (1)].Integer)); } break; case 105: /* Line 1455 of yacc.c */ -#line 574 "ntp_parser.y" +#line 571 "ntp_parser.y" { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[(1) - (1)].Integer)); } break; case 106: /* Line 1455 of yacc.c */ -#line 578 "ntp_parser.y" +#line 575 "ntp_parser.y" { (yyval.Integer) = FILEGEN_NONE; } break; case 107: /* Line 1455 of yacc.c */ -#line 579 "ntp_parser.y" +#line 576 "ntp_parser.y" { (yyval.Integer) = FILEGEN_PID; } break; case 108: /* Line 1455 of yacc.c */ -#line 580 "ntp_parser.y" +#line 577 "ntp_parser.y" { (yyval.Integer) = FILEGEN_DAY; } break; case 109: /* Line 1455 of yacc.c */ -#line 581 "ntp_parser.y" +#line 578 "ntp_parser.y" { (yyval.Integer) = FILEGEN_WEEK; } break; case 110: /* Line 1455 of yacc.c */ -#line 582 "ntp_parser.y" +#line 579 "ntp_parser.y" { (yyval.Integer) = FILEGEN_MONTH; } break; case 111: /* Line 1455 of yacc.c */ -#line 583 "ntp_parser.y" +#line 580 "ntp_parser.y" { (yyval.Integer) = FILEGEN_YEAR; } break; case 112: /* Line 1455 of yacc.c */ -#line 584 "ntp_parser.y" +#line 581 "ntp_parser.y" { (yyval.Integer) = FILEGEN_AGE; } break; case 113: /* Line 1455 of yacc.c */ -#line 594 "ntp_parser.y" +#line 591 "ntp_parser.y" { append_queue(cfgt.discard_opts, (yyvsp[(2) - (2)].Queue)); } @@ -2788,7 +2785,7 @@ yyreduce: case 114: /* Line 1455 of yacc.c */ -#line 598 "ntp_parser.y" +#line 595 "ntp_parser.y" { enqueue(cfgt.restrict_opts, create_restrict_node((yyvsp[(2) - (3)].Address_node), NULL, (yyvsp[(3) - (3)].Queue), ip_file->line_no)); @@ -2798,7 +2795,7 @@ yyreduce: case 115: /* Line 1455 of yacc.c */ -#line 603 "ntp_parser.y" +#line 600 "ntp_parser.y" { enqueue(cfgt.restrict_opts, create_restrict_node(NULL, NULL, (yyvsp[(3) - (3)].Queue), ip_file->line_no)); @@ -2808,7 +2805,7 @@ yyreduce: case 116: /* Line 1455 of yacc.c */ -#line 608 "ntp_parser.y" +#line 605 "ntp_parser.y" { enqueue(cfgt.restrict_opts, create_restrict_node( @@ -2826,7 +2823,7 @@ yyreduce: case 117: /* Line 1455 of yacc.c */ -#line 621 "ntp_parser.y" +#line 618 "ntp_parser.y" { enqueue(cfgt.restrict_opts, create_restrict_node( @@ -2844,7 +2841,7 @@ yyreduce: case 118: /* Line 1455 of yacc.c */ -#line 634 "ntp_parser.y" +#line 631 "ntp_parser.y" { enqueue(cfgt.restrict_opts, create_restrict_node((yyvsp[(2) - (5)].Address_node), (yyvsp[(4) - (5)].Address_node), (yyvsp[(5) - (5)].Queue), ip_file->line_no)); @@ -2854,378 +2851,378 @@ yyreduce: case 119: /* Line 1455 of yacc.c */ -#line 641 "ntp_parser.y" +#line 638 "ntp_parser.y" { (yyval.Queue) = create_queue(); } break; case 120: /* Line 1455 of yacc.c */ -#line 642 "ntp_parser.y" +#line 639 "ntp_parser.y" { (yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), (yyvsp[(2) - (2)].VoidPtr)); } break; case 121: /* Line 1455 of yacc.c */ -#line 646 "ntp_parser.y" +#line 643 "ntp_parser.y" { (yyval.VoidPtr) = create_ival(RES_TIMEOUT); } break; case 122: /* Line 1455 of yacc.c */ -#line 647 "ntp_parser.y" +#line 644 "ntp_parser.y" { (yyval.VoidPtr) = create_ival(RES_IGNORE); } break; case 123: /* Line 1455 of yacc.c */ -#line 648 "ntp_parser.y" +#line 645 "ntp_parser.y" { (yyval.VoidPtr) = create_ival(RES_KOD); } break; case 124: /* Line 1455 of yacc.c */ -#line 649 "ntp_parser.y" +#line 646 "ntp_parser.y" { (yyval.VoidPtr) = create_ival(RES_MSSNTP); } break; case 125: /* Line 1455 of yacc.c */ -#line 650 "ntp_parser.y" +#line 647 "ntp_parser.y" { (yyval.VoidPtr) = create_ival(RES_LIMITED); } break; case 126: /* Line 1455 of yacc.c */ -#line 651 "ntp_parser.y" +#line 648 "ntp_parser.y" { (yyval.VoidPtr) = create_ival(RES_LPTRAP); } break; case 127: /* Line 1455 of yacc.c */ -#line 652 "ntp_parser.y" +#line 649 "ntp_parser.y" { (yyval.VoidPtr) = create_ival(RES_NOMODIFY); } break; case 128: /* Line 1455 of yacc.c */ -#line 653 "ntp_parser.y" +#line 650 "ntp_parser.y" { (yyval.VoidPtr) = create_ival(RES_NOPEER); } break; case 129: /* Line 1455 of yacc.c */ -#line 654 "ntp_parser.y" +#line 651 "ntp_parser.y" { (yyval.VoidPtr) = create_ival(RES_NOQUERY); } break; case 130: /* Line 1455 of yacc.c */ -#line 655 "ntp_parser.y" +#line 652 "ntp_parser.y" { (yyval.VoidPtr) = create_ival(RES_DONTSERVE); } break; case 131: /* Line 1455 of yacc.c */ -#line 656 "ntp_parser.y" +#line 653 "ntp_parser.y" { (yyval.VoidPtr) = create_ival(RES_NOTRAP); } break; case 132: /* Line 1455 of yacc.c */ -#line 657 "ntp_parser.y" +#line 654 "ntp_parser.y" { (yyval.VoidPtr) = create_ival(RES_DONTTRUST); } break; case 133: /* Line 1455 of yacc.c */ -#line 658 "ntp_parser.y" +#line 655 "ntp_parser.y" { (yyval.VoidPtr) = create_ival(RESM_NTPONLY); } break; case 134: /* Line 1455 of yacc.c */ -#line 659 "ntp_parser.y" +#line 656 "ntp_parser.y" { (yyval.VoidPtr) = create_ival(RES_VERSION); } break; case 135: /* Line 1455 of yacc.c */ -#line 663 "ntp_parser.y" +#line 660 "ntp_parser.y" { (yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), (yyvsp[(2) - (2)].Attr_val)); } break; case 136: /* Line 1455 of yacc.c */ -#line 664 "ntp_parser.y" +#line 661 "ntp_parser.y" { (yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (1)].Attr_val)); } break; case 137: /* Line 1455 of yacc.c */ -#line 668 "ntp_parser.y" +#line 665 "ntp_parser.y" { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); } break; case 138: /* Line 1455 of yacc.c */ -#line 669 "ntp_parser.y" +#line 666 "ntp_parser.y" { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); } break; case 139: /* Line 1455 of yacc.c */ -#line 670 "ntp_parser.y" +#line 667 "ntp_parser.y" { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); } break; case 140: /* Line 1455 of yacc.c */ -#line 679 "ntp_parser.y" +#line 676 "ntp_parser.y" { enqueue(cfgt.fudge, create_addr_opts_node((yyvsp[(2) - (3)].Address_node), (yyvsp[(3) - (3)].Queue))); } break; case 141: /* Line 1455 of yacc.c */ -#line 683 "ntp_parser.y" +#line 680 "ntp_parser.y" { enqueue((yyvsp[(1) - (2)].Queue), (yyvsp[(2) - (2)].Attr_val)); } break; case 142: /* Line 1455 of yacc.c */ -#line 684 "ntp_parser.y" +#line 681 "ntp_parser.y" { (yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (1)].Attr_val)); } break; case 143: /* Line 1455 of yacc.c */ -#line 689 "ntp_parser.y" +#line 686 "ntp_parser.y" { (yyval.Attr_val) = create_attr_dval(CLK_HAVETIME1, (yyvsp[(2) - (2)].Double)); } break; case 144: /* Line 1455 of yacc.c */ -#line 691 "ntp_parser.y" +#line 688 "ntp_parser.y" { (yyval.Attr_val) = create_attr_dval(CLK_HAVETIME2, (yyvsp[(2) - (2)].Double)); } break; case 145: /* Line 1455 of yacc.c */ -#line 693 "ntp_parser.y" +#line 690 "ntp_parser.y" { (yyval.Attr_val) = create_attr_ival(CLK_HAVEVAL1, (yyvsp[(2) - (2)].Integer)); } break; case 146: /* Line 1455 of yacc.c */ -#line 695 "ntp_parser.y" +#line 692 "ntp_parser.y" { (yyval.Attr_val) = create_attr_sval(CLK_HAVEVAL2, (yyvsp[(2) - (2)].String)); } break; case 147: /* Line 1455 of yacc.c */ -#line 697 "ntp_parser.y" +#line 694 "ntp_parser.y" { (yyval.Attr_val) = create_attr_ival(CLK_HAVEFLAG1, (yyvsp[(2) - (2)].Integer)); } break; case 148: /* Line 1455 of yacc.c */ -#line 699 "ntp_parser.y" +#line 696 "ntp_parser.y" { (yyval.Attr_val) = create_attr_ival(CLK_HAVEFLAG2, (yyvsp[(2) - (2)].Integer)); } break; case 149: /* Line 1455 of yacc.c */ -#line 701 "ntp_parser.y" +#line 698 "ntp_parser.y" { (yyval.Attr_val) = create_attr_ival(CLK_HAVEFLAG3, (yyvsp[(2) - (2)].Integer)); } break; case 150: /* Line 1455 of yacc.c */ -#line 703 "ntp_parser.y" +#line 700 "ntp_parser.y" { (yyval.Attr_val) = create_attr_ival(CLK_HAVEFLAG4, (yyvsp[(2) - (2)].Integer)); } break; case 151: /* Line 1455 of yacc.c */ -#line 712 "ntp_parser.y" - { append_queue(cfgt.enable_opts,(yyvsp[(2) - (2)].Queue)); } +#line 709 "ntp_parser.y" + { append_queue(cfgt.enable_opts, (yyvsp[(2) - (2)].Queue)); } break; case 152: /* Line 1455 of yacc.c */ -#line 714 "ntp_parser.y" - { append_queue(cfgt.disable_opts,(yyvsp[(2) - (2)].Queue)); } +#line 711 "ntp_parser.y" + { append_queue(cfgt.disable_opts, (yyvsp[(2) - (2)].Queue)); } break; case 153: /* Line 1455 of yacc.c */ -#line 718 "ntp_parser.y" +#line 715 "ntp_parser.y" { (yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), (yyvsp[(2) - (2)].Attr_val)); } break; case 154: /* Line 1455 of yacc.c */ -#line 719 "ntp_parser.y" +#line 716 "ntp_parser.y" { (yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (1)].Attr_val)); } break; case 155: /* Line 1455 of yacc.c */ -#line 723 "ntp_parser.y" - { (yyval.Attr_val) = create_attr_ival(T_Flag, PROTO_AUTHENTICATE); } +#line 720 "ntp_parser.y" + { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[(1) - (1)].Integer)); } break; case 156: /* Line 1455 of yacc.c */ -#line 724 "ntp_parser.y" - { (yyval.Attr_val) = create_attr_ival(T_Flag, PROTO_BROADCLIENT); } +#line 721 "ntp_parser.y" + { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[(1) - (1)].Integer)); } break; case 157: /* Line 1455 of yacc.c */ -#line 725 "ntp_parser.y" - { (yyval.Attr_val) = create_attr_ival(T_Flag, PROTO_CAL); } +#line 722 "ntp_parser.y" + { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[(1) - (1)].Integer)); } break; case 158: /* Line 1455 of yacc.c */ -#line 726 "ntp_parser.y" - { (yyval.Attr_val) = create_attr_ival(T_Flag, PROTO_KERNEL); } +#line 723 "ntp_parser.y" + { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[(1) - (1)].Integer)); } break; case 159: /* Line 1455 of yacc.c */ -#line 727 "ntp_parser.y" - { (yyval.Attr_val) = create_attr_ival(T_Flag, PROTO_MONITOR); } +#line 724 "ntp_parser.y" + { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[(1) - (1)].Integer)); } break; case 160: /* Line 1455 of yacc.c */ -#line 728 "ntp_parser.y" - { (yyval.Attr_val) = create_attr_ival(T_Flag, PROTO_NTP); } +#line 725 "ntp_parser.y" + { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[(1) - (1)].Integer)); } break; case 161: /* Line 1455 of yacc.c */ -#line 730 "ntp_parser.y" - { (yyval.Attr_val) = create_attr_ival(T_Flag, PROTO_FILEGEN); } +#line 726 "ntp_parser.y" + { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[(1) - (1)].Integer)); } break; case 162: /* Line 1455 of yacc.c */ -#line 738 "ntp_parser.y" +#line 734 "ntp_parser.y" { append_queue(cfgt.tinker, (yyvsp[(2) - (2)].Queue)); } break; case 163: /* Line 1455 of yacc.c */ -#line 742 "ntp_parser.y" +#line 738 "ntp_parser.y" { (yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), (yyvsp[(2) - (2)].Attr_val)); } break; case 164: /* Line 1455 of yacc.c */ -#line 743 "ntp_parser.y" +#line 739 "ntp_parser.y" { (yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (1)].Attr_val)); } break; case 165: /* Line 1455 of yacc.c */ -#line 747 "ntp_parser.y" +#line 743 "ntp_parser.y" { (yyval.Attr_val) = create_attr_dval(LOOP_ALLAN, (yyvsp[(2) - (2)].Double)); } break; case 166: /* Line 1455 of yacc.c */ -#line 748 "ntp_parser.y" +#line 744 "ntp_parser.y" { (yyval.Attr_val) = create_attr_dval(LOOP_PHI, (yyvsp[(2) - (2)].Double)); } break; case 167: /* Line 1455 of yacc.c */ -#line 749 "ntp_parser.y" +#line 745 "ntp_parser.y" { (yyval.Attr_val) = create_attr_dval(LOOP_FREQ, (yyvsp[(2) - (2)].Double)); } break; case 168: /* Line 1455 of yacc.c */ -#line 750 "ntp_parser.y" +#line 746 "ntp_parser.y" { (yyval.Attr_val) = create_attr_dval(LOOP_HUFFPUFF, (yyvsp[(2) - (2)].Double)); } break; case 169: /* Line 1455 of yacc.c */ -#line 751 "ntp_parser.y" +#line 747 "ntp_parser.y" { (yyval.Attr_val) = create_attr_dval(LOOP_PANIC, (yyvsp[(2) - (2)].Double)); } break; case 170: /* Line 1455 of yacc.c */ -#line 752 "ntp_parser.y" +#line 748 "ntp_parser.y" { (yyval.Attr_val) = create_attr_dval(LOOP_MAX, (yyvsp[(2) - (2)].Double)); } break; case 171: /* Line 1455 of yacc.c */ -#line 753 "ntp_parser.y" +#line 749 "ntp_parser.y" { (yyval.Attr_val) = create_attr_dval(LOOP_MINSTEP, (yyvsp[(2) - (2)].Double)); } break; case 172: /* Line 1455 of yacc.c */ -#line 762 "ntp_parser.y" +#line 758 "ntp_parser.y" { if (curr_include_level >= MAXINCLUDELEVEL) { fprintf(stderr, "getconfig: Maximum include file level exceeded.\n"); @@ -3246,7 +3243,7 @@ yyreduce: case 173: /* Line 1455 of yacc.c */ -#line 778 "ntp_parser.y" +#line 774 "ntp_parser.y" { while (curr_include_level != -1) FCLOSE(fp[curr_include_level--]); @@ -3256,119 +3253,119 @@ yyreduce: case 174: /* Line 1455 of yacc.c */ -#line 784 "ntp_parser.y" +#line 780 "ntp_parser.y" { enqueue(cfgt.vars, create_attr_dval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Double))); } break; case 175: /* Line 1455 of yacc.c */ -#line 786 "ntp_parser.y" +#line 782 "ntp_parser.y" { enqueue(cfgt.vars, create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer))); } break; case 176: /* Line 1455 of yacc.c */ -#line 788 "ntp_parser.y" +#line 784 "ntp_parser.y" { enqueue(cfgt.vars, create_attr_dval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Double))); } break; case 177: /* Line 1455 of yacc.c */ -#line 790 "ntp_parser.y" +#line 786 "ntp_parser.y" { /* Null action, possibly all null parms */ } break; case 178: /* Line 1455 of yacc.c */ -#line 792 "ntp_parser.y" +#line 788 "ntp_parser.y" { enqueue(cfgt.vars, create_attr_sval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].String))); } break; case 179: /* Line 1455 of yacc.c */ -#line 795 "ntp_parser.y" +#line 791 "ntp_parser.y" { enqueue(cfgt.vars, create_attr_sval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].String))); } break; case 180: /* Line 1455 of yacc.c */ -#line 797 "ntp_parser.y" +#line 793 "ntp_parser.y" { enqueue(cfgt.vars, create_attr_sval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].String))); } break; case 181: /* Line 1455 of yacc.c */ -#line 799 "ntp_parser.y" +#line 795 "ntp_parser.y" { enqueue(cfgt.vars, create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer))); } break; case 182: /* Line 1455 of yacc.c */ -#line 802 "ntp_parser.y" +#line 798 "ntp_parser.y" { append_queue(cfgt.logconfig, (yyvsp[(2) - (2)].Queue)); } break; case 183: /* Line 1455 of yacc.c */ -#line 804 "ntp_parser.y" +#line 800 "ntp_parser.y" { append_queue(cfgt.phone, (yyvsp[(2) - (2)].Queue)); } break; case 184: /* Line 1455 of yacc.c */ -#line 806 "ntp_parser.y" +#line 802 "ntp_parser.y" { enqueue(cfgt.setvar, (yyvsp[(2) - (2)].Set_var)); } break; case 185: /* Line 1455 of yacc.c */ -#line 808 "ntp_parser.y" +#line 804 "ntp_parser.y" { enqueue(cfgt.trap, create_addr_opts_node((yyvsp[(2) - (2)].Address_node), NULL)); } break; case 186: /* Line 1455 of yacc.c */ -#line 810 "ntp_parser.y" +#line 806 "ntp_parser.y" { enqueue(cfgt.trap, create_addr_opts_node((yyvsp[(2) - (3)].Address_node), (yyvsp[(3) - (3)].Queue))); } break; case 187: /* Line 1455 of yacc.c */ -#line 812 "ntp_parser.y" +#line 808 "ntp_parser.y" { append_queue(cfgt.ttl, (yyvsp[(2) - (2)].Queue)); } break; case 188: /* Line 1455 of yacc.c */ -#line 814 "ntp_parser.y" +#line 810 "ntp_parser.y" { enqueue(cfgt.qos, create_attr_sval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].String))); } break; case 189: /* Line 1455 of yacc.c */ -#line 818 "ntp_parser.y" +#line 814 "ntp_parser.y" { enqueue(cfgt.vars, create_attr_sval(T_Driftfile, (yyvsp[(1) - (1)].String))); } break; case 190: /* Line 1455 of yacc.c */ -#line 820 "ntp_parser.y" +#line 816 "ntp_parser.y" { enqueue(cfgt.vars, create_attr_dval(T_WanderThreshold, (yyvsp[(2) - (2)].Double))); enqueue(cfgt.vars, create_attr_sval(T_Driftfile, (yyvsp[(1) - (2)].String))); } break; @@ -3376,70 +3373,70 @@ yyreduce: case 191: /* Line 1455 of yacc.c */ -#line 823 "ntp_parser.y" +#line 819 "ntp_parser.y" { enqueue(cfgt.vars, create_attr_sval(T_Driftfile, "\0")); } break; case 192: /* Line 1455 of yacc.c */ -#line 828 "ntp_parser.y" +#line 824 "ntp_parser.y" { (yyval.Set_var) = create_setvar_node((yyvsp[(1) - (4)].String), (yyvsp[(3) - (4)].String), DEF); } break; case 193: /* Line 1455 of yacc.c */ -#line 830 "ntp_parser.y" +#line 826 "ntp_parser.y" { (yyval.Set_var) = create_setvar_node((yyvsp[(1) - (3)].String), (yyvsp[(3) - (3)].String), 0); } break; case 194: /* Line 1455 of yacc.c */ -#line 836 "ntp_parser.y" +#line 832 "ntp_parser.y" { (yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), (yyvsp[(2) - (2)].Attr_val)); } break; case 195: /* Line 1455 of yacc.c */ -#line 837 "ntp_parser.y" +#line 833 "ntp_parser.y" { (yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (1)].Attr_val)); } break; case 196: /* Line 1455 of yacc.c */ -#line 841 "ntp_parser.y" +#line 837 "ntp_parser.y" { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); } break; case 197: /* Line 1455 of yacc.c */ -#line 842 "ntp_parser.y" +#line 838 "ntp_parser.y" { (yyval.Attr_val) = create_attr_pval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Address_node)); } break; case 198: /* Line 1455 of yacc.c */ -#line 847 "ntp_parser.y" +#line 843 "ntp_parser.y" { (yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), (yyvsp[(2) - (2)].Attr_val)); } break; case 199: /* Line 1455 of yacc.c */ -#line 848 "ntp_parser.y" +#line 844 "ntp_parser.y" { (yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (1)].Attr_val)); } break; case 200: /* Line 1455 of yacc.c */ -#line 853 "ntp_parser.y" +#line 849 "ntp_parser.y" { char prefix = (yyvsp[(1) - (1)].String)[0]; char *type = (yyvsp[(1) - (1)].String) + 1; @@ -3456,49 +3453,49 @@ yyreduce: case 201: /* Line 1455 of yacc.c */ -#line 872 "ntp_parser.y" +#line 868 "ntp_parser.y" { (yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), create_ival((yyvsp[(2) - (2)].Integer))); } break; case 202: /* Line 1455 of yacc.c */ -#line 873 "ntp_parser.y" +#line 869 "ntp_parser.y" { (yyval.Queue) = enqueue_in_new_queue(create_ival((yyvsp[(1) - (1)].Integer))); } break; case 203: /* Line 1455 of yacc.c */ -#line 877 "ntp_parser.y" +#line 873 "ntp_parser.y" { (yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), create_pval((yyvsp[(2) - (2)].String))); } break; case 204: /* Line 1455 of yacc.c */ -#line 878 "ntp_parser.y" +#line 874 "ntp_parser.y" { (yyval.Queue) = enqueue_in_new_queue(create_pval((yyvsp[(1) - (1)].String))); } break; case 205: /* Line 1455 of yacc.c */ -#line 882 "ntp_parser.y" +#line 878 "ntp_parser.y" { (yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), (yyvsp[(2) - (2)].Address_node)); } break; case 206: /* Line 1455 of yacc.c */ -#line 883 "ntp_parser.y" +#line 879 "ntp_parser.y" { (yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (1)].Address_node)); } break; case 207: /* Line 1455 of yacc.c */ -#line 888 "ntp_parser.y" +#line 884 "ntp_parser.y" { if ((yyvsp[(1) - (1)].Integer) != 0 && (yyvsp[(1) - (1)].Integer) != 1) { yyerror("Integer value is not boolean (0 or 1). Assuming 1"); @@ -3512,28 +3509,28 @@ yyreduce: case 208: /* Line 1455 of yacc.c */ -#line 896 "ntp_parser.y" +#line 892 "ntp_parser.y" { (yyval.Integer) = 1; } break; case 209: /* Line 1455 of yacc.c */ -#line 897 "ntp_parser.y" +#line 893 "ntp_parser.y" { (yyval.Integer) = 0; } break; case 210: /* Line 1455 of yacc.c */ -#line 901 "ntp_parser.y" +#line 897 "ntp_parser.y" { (yyval.Double) = (double)(yyvsp[(1) - (1)].Integer); } break; case 212: /* Line 1455 of yacc.c */ -#line 912 "ntp_parser.y" +#line 908 "ntp_parser.y" { cfgt.sim_details = create_sim_node((yyvsp[(3) - (5)].Queue), (yyvsp[(4) - (5)].Queue)); @@ -3545,147 +3542,147 @@ yyreduce: case 213: /* Line 1455 of yacc.c */ -#line 926 "ntp_parser.y" +#line 922 "ntp_parser.y" { old_config_style = 0; } break; case 214: /* Line 1455 of yacc.c */ -#line 930 "ntp_parser.y" +#line 926 "ntp_parser.y" { (yyval.Queue) = enqueue((yyvsp[(1) - (3)].Queue), (yyvsp[(2) - (3)].Attr_val)); } break; case 215: /* Line 1455 of yacc.c */ -#line 931 "ntp_parser.y" +#line 927 "ntp_parser.y" { (yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (2)].Attr_val)); } break; case 216: /* Line 1455 of yacc.c */ -#line 935 "ntp_parser.y" +#line 931 "ntp_parser.y" { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (3)].Integer), (yyvsp[(3) - (3)].Double)); } break; case 217: /* Line 1455 of yacc.c */ -#line 936 "ntp_parser.y" +#line 932 "ntp_parser.y" { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (3)].Integer), (yyvsp[(3) - (3)].Double)); } break; case 218: /* Line 1455 of yacc.c */ -#line 940 "ntp_parser.y" +#line 936 "ntp_parser.y" { (yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), (yyvsp[(2) - (2)].Sim_server)); } break; case 219: /* Line 1455 of yacc.c */ -#line 941 "ntp_parser.y" +#line 937 "ntp_parser.y" { (yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (1)].Sim_server)); } break; case 220: /* Line 1455 of yacc.c */ -#line 946 "ntp_parser.y" +#line 942 "ntp_parser.y" { (yyval.Sim_server) = create_sim_server((yyvsp[(1) - (5)].Address_node), (yyvsp[(3) - (5)].Double), (yyvsp[(4) - (5)].Queue)); } break; case 221: /* Line 1455 of yacc.c */ -#line 950 "ntp_parser.y" +#line 946 "ntp_parser.y" { (yyval.Double) = (yyvsp[(3) - (4)].Double); } break; case 222: /* Line 1455 of yacc.c */ -#line 954 "ntp_parser.y" +#line 950 "ntp_parser.y" { (yyval.Address_node) = (yyvsp[(3) - (3)].Address_node); } break; case 223: /* Line 1455 of yacc.c */ -#line 958 "ntp_parser.y" +#line 954 "ntp_parser.y" { (yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), (yyvsp[(2) - (2)].Sim_script)); } break; case 224: /* Line 1455 of yacc.c */ -#line 959 "ntp_parser.y" +#line 955 "ntp_parser.y" { (yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (1)].Sim_script)); } break; case 225: /* Line 1455 of yacc.c */ -#line 964 "ntp_parser.y" +#line 960 "ntp_parser.y" { (yyval.Sim_script) = create_sim_script_info((yyvsp[(3) - (6)].Double), (yyvsp[(5) - (6)].Queue)); } break; case 226: /* Line 1455 of yacc.c */ -#line 968 "ntp_parser.y" +#line 964 "ntp_parser.y" { (yyval.Queue) = enqueue((yyvsp[(1) - (3)].Queue), (yyvsp[(2) - (3)].Attr_val)); } break; case 227: /* Line 1455 of yacc.c */ -#line 969 "ntp_parser.y" +#line 965 "ntp_parser.y" { (yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (2)].Attr_val)); } break; case 228: /* Line 1455 of yacc.c */ -#line 974 "ntp_parser.y" +#line 970 "ntp_parser.y" { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (3)].Integer), (yyvsp[(3) - (3)].Double)); } break; case 229: /* Line 1455 of yacc.c */ -#line 976 "ntp_parser.y" +#line 972 "ntp_parser.y" { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (3)].Integer), (yyvsp[(3) - (3)].Double)); } break; case 230: /* Line 1455 of yacc.c */ -#line 978 "ntp_parser.y" +#line 974 "ntp_parser.y" { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (3)].Integer), (yyvsp[(3) - (3)].Double)); } break; case 231: /* Line 1455 of yacc.c */ -#line 980 "ntp_parser.y" +#line 976 "ntp_parser.y" { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (3)].Integer), (yyvsp[(3) - (3)].Double)); } break; case 232: /* Line 1455 of yacc.c */ -#line 982 "ntp_parser.y" +#line 978 "ntp_parser.y" { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (3)].Integer), (yyvsp[(3) - (3)].Double)); } break; /* Line 1455 of yacc.c */ -#line 3689 "ntp_parser.c" +#line 3686 "ntp_parser.c" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); @@ -3897,7 +3894,7 @@ yyreturn: /* Line 1675 of yacc.c */ -#line 986 "ntp_parser.y" +#line 982 "ntp_parser.y" void yyerror (char *msg) diff --git a/ntpd/ntp_parser.y b/ntpd/ntp_parser.y index a3ae88b75..6ce960288 100644 --- a/ntpd/ntp_parser.y +++ b/ntpd/ntp_parser.y @@ -433,11 +433,8 @@ authentication_command { cfgt.auth.control_key = $2; } | T_Crypto crypto_command_line { - if (cfgt.auth.crypto_cmd_list != NULL) - append_queue(cfgt.auth.crypto_cmd_list, $2); - else - cfgt.auth.crypto_cmd_list = $2; cryptosw++; + append_queue(cfgt.auth.crypto_cmd_list, $2); } | T_Keys T_String { cfgt.auth.keys = $2; } @@ -454,7 +451,7 @@ authentication_command crypto_command_line : crypto_command_list | /* Null list */ - { $$ = NULL; } + { $$ = create_queue(); } ; crypto_command_list @@ -709,9 +706,9 @@ fudge_factor system_option_command : T_Enable system_option_list - { append_queue(cfgt.enable_opts,$2); } + { append_queue(cfgt.enable_opts, $2); } | T_Disable system_option_list - { append_queue(cfgt.disable_opts,$2); } + { append_queue(cfgt.disable_opts, $2); } ; system_option_list @@ -720,14 +717,13 @@ system_option_list ; system_option - : T_Auth { $$ = create_attr_ival(T_Flag, PROTO_AUTHENTICATE); } - | T_Bclient { $$ = create_attr_ival(T_Flag, PROTO_BROADCLIENT); } - | T_Calibrate { $$ = create_attr_ival(T_Flag, PROTO_CAL); } - | T_Kernel { $$ = create_attr_ival(T_Flag, PROTO_KERNEL); } - | T_Monitor { $$ = create_attr_ival(T_Flag, PROTO_MONITOR); } - | T_Ntp { $$ = create_attr_ival(T_Flag, PROTO_NTP); } -/* | T_Pps */ - | T_Stats { $$ = create_attr_ival(T_Flag, PROTO_FILEGEN); } + : T_Auth { $$ = create_attr_ival(T_Flag, $1); } + | T_Bclient { $$ = create_attr_ival(T_Flag, $1); } + | T_Calibrate { $$ = create_attr_ival(T_Flag, $1); } + | T_Kernel { $$ = create_attr_ival(T_Flag, $1); } + | T_Monitor { $$ = create_attr_ival(T_Flag, $1); } + | T_Ntp { $$ = create_attr_ival(T_Flag, $1); } + | T_Stats { $$ = create_attr_ival(T_Flag, $1); } ; /* Tinker Commands diff --git a/sntp/kod_management.c b/sntp/kod_management.c index dcb336ea8..0835af749 100644 --- a/sntp/kod_management.c +++ b/sntp/kod_management.c @@ -46,8 +46,10 @@ search_entry ( if (!strcmp(kod_db[a]->hostname, hostname)) resc++; - if (!resc) + if (!resc) { + *dst = NULL; return 0; + } *dst = emalloc(resc * sizeof(**dst)); @@ -215,7 +217,7 @@ kod_init_kod_db( continue; sepc = 0; - for(a=0; a