summaryrefslogtreecommitdiff
path: root/readconf.c
diff options
context:
space:
mode:
Diffstat (limited to 'readconf.c')
-rw-r--r--readconf.c31
1 files changed, 27 insertions, 4 deletions
diff --git a/readconf.c b/readconf.c
index be14cd5b8..d2c5a77f7 100644
--- a/readconf.c
+++ b/readconf.c
@@ -12,7 +12,7 @@
12 */ 12 */
13 13
14#include "includes.h" 14#include "includes.h"
15RCSID("$OpenBSD: readconf.c,v 1.139 2005/03/10 22:01:05 deraadt Exp $"); 15RCSID("$OpenBSD: readconf.c,v 1.143 2005/07/30 02:03:47 djm Exp $");
16 16
17#include "ssh.h" 17#include "ssh.h"
18#include "xmalloc.h" 18#include "xmalloc.h"
@@ -698,7 +698,7 @@ parse_int:
698 fwd.listen_host = cleanhostname(fwd.listen_host); 698 fwd.listen_host = cleanhostname(fwd.listen_host);
699 } else { 699 } else {
700 fwd.listen_port = a2port(fwd.listen_host); 700 fwd.listen_port = a2port(fwd.listen_host);
701 fwd.listen_host = ""; 701 fwd.listen_host = NULL;
702 } 702 }
703 if (fwd.listen_port == 0) 703 if (fwd.listen_port == 0)
704 fatal("%.200s line %d: Badly formatted port number.", 704 fatal("%.200s line %d: Badly formatted port number.",
@@ -746,6 +746,9 @@ parse_int:
746 746
747 case oAddressFamily: 747 case oAddressFamily:
748 arg = strdelim(&s); 748 arg = strdelim(&s);
749 if (!arg || *arg == '\0')
750 fatal("%s line %d: missing address family.",
751 filename, linenum);
749 intptr = &options->address_family; 752 intptr = &options->address_family;
750 if (strcasecmp(arg, "inet") == 0) 753 if (strcasecmp(arg, "inet") == 0)
751 value = AF_INET; 754 value = AF_INET;
@@ -797,7 +800,27 @@ parse_int:
797 800
798 case oControlMaster: 801 case oControlMaster:
799 intptr = &options->control_master; 802 intptr = &options->control_master;
800 goto parse_yesnoask; 803 arg = strdelim(&s);
804 if (!arg || *arg == '\0')
805 fatal("%.200s line %d: Missing ControlMaster argument.",
806 filename, linenum);
807 value = 0; /* To avoid compiler warning... */
808 if (strcmp(arg, "yes") == 0 || strcmp(arg, "true") == 0)
809 value = SSHCTL_MASTER_YES;
810 else if (strcmp(arg, "no") == 0 || strcmp(arg, "false") == 0)
811 value = SSHCTL_MASTER_NO;
812 else if (strcmp(arg, "auto") == 0)
813 value = SSHCTL_MASTER_AUTO;
814 else if (strcmp(arg, "ask") == 0)
815 value = SSHCTL_MASTER_ASK;
816 else if (strcmp(arg, "autoask") == 0)
817 value = SSHCTL_MASTER_AUTO_ASK;
818 else
819 fatal("%.200s line %d: Bad ControlMaster argument.",
820 filename, linenum);
821 if (*activep && *intptr == -1)
822 *intptr = value;
823 break;
801 824
802 case oHashKnownHosts: 825 case oHashKnownHosts:
803 intptr = &options->hash_known_hosts; 826 intptr = &options->hash_known_hosts;
@@ -824,7 +847,7 @@ parse_int:
824 /* Check that there is no garbage at end of line. */ 847 /* Check that there is no garbage at end of line. */
825 if ((arg = strdelim(&s)) != NULL && *arg != '\0') { 848 if ((arg = strdelim(&s)) != NULL && *arg != '\0') {
826 fatal("%.200s line %d: garbage at end of line; \"%.200s\".", 849 fatal("%.200s line %d: garbage at end of line; \"%.200s\".",
827 filename, linenum, arg); 850 filename, linenum, arg);
828 } 851 }
829 return 0; 852 return 0;
830} 853}