Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
HardenedBSD
HardenedBSD
Commits
7ae06c65
Commit
7ae06c65
authored
Apr 24, 2013
by
Dag-Erling Smørgrav
Browse files
The previous commit missed part of the patch. Re-apply.
parent
f7439998
Changes
3
Hide whitespace changes
Inline
Side-by-side
readconf.c
View file @
7ae06c65
/* $OpenBSD: readconf.c,v 1.19
5
2013/02/
17 23:16:57
dtucker Exp $ */
/* $OpenBSD: readconf.c,v 1.19
6
2013/02/
22 04:45:08
dtucker Exp $ */
/*
* Author: Tatu Ylonen <ylo@cs.hut.fi>
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
...
...
@@ -373,7 +373,7 @@ parse_token(const char *cp, const char *filename, int linenum)
int
process_config_line
(
Options
*
options
,
const
char
*
host
,
char
*
line
,
const
char
*
filename
,
int
linenum
,
int
*
activep
)
int
*
activep
,
int
userconfig
)
{
char
*
s
,
**
charptr
,
*
endofnumber
,
*
keyword
,
*
arg
,
*
arg2
;
char
**
cpptr
,
fwdarg
[
256
];
...
...
@@ -606,7 +606,7 @@ process_config_line(Options *options, const char *host,
if
(
*
intptr
>=
SSH_MAX_IDENTITY_FILES
)
fatal
(
"%.200s line %d: Too many identity files specified (max %d)."
,
filename
,
linenum
,
SSH_MAX_IDENTITY_FILES
);
add_identity_file
(
options
,
NULL
,
arg
,
1
);
add_identity_file
(
options
,
NULL
,
arg
,
userconfig
);
}
break
;
...
...
@@ -1093,7 +1093,7 @@ process_config_line(Options *options, const char *host,
int
read_config_file
(
const
char
*
filename
,
const
char
*
host
,
Options
*
options
,
int
checkperm
)
int
flags
)
{
FILE
*
f
;
char
line
[
1024
];
...
...
@@ -1103,7 +1103,7 @@ read_config_file(const char *filename, const char *host, Options *options,
if
((
f
=
fopen
(
filename
,
"r"
))
==
NULL
)
return
0
;
if
(
checkperm
)
{
if
(
flags
&
SSHCONF_CHECKPERM
)
{
struct
stat
sb
;
if
(
fstat
(
fileno
(
f
),
&
sb
)
==
-
1
)
...
...
@@ -1124,7 +1124,8 @@ read_config_file(const char *filename, const char *host, Options *options,
while
(
fgets
(
line
,
sizeof
(
line
),
f
))
{
/* Update line number counter. */
linenum
++
;
if
(
process_config_line
(
options
,
host
,
line
,
filename
,
linenum
,
&
active
)
!=
0
)
if
(
process_config_line
(
options
,
host
,
line
,
filename
,
linenum
,
&
active
,
flags
&
SSHCONF_USERCONF
)
!=
0
)
bad_options
++
;
}
fclose
(
f
);
...
...
@@ -1298,30 +1299,17 @@ fill_default_options(Options * options)
options
->
protocol
=
SSH_PROTO_2
;
if
(
options
->
num_identity_files
==
0
)
{
if
(
options
->
protocol
&
SSH_PROTO_1
)
{
len
=
2
+
strlen
(
_PATH_SSH_CLIENT_IDENTITY
)
+
1
;
options
->
identity_files
[
options
->
num_identity_files
]
=
xmalloc
(
len
);
snprintf
(
options
->
identity_files
[
options
->
num_identity_files
++
],
len
,
"~/%.100s"
,
_PATH_SSH_CLIENT_IDENTITY
);
add_identity_file
(
options
,
"~/"
,
_PATH_SSH_CLIENT_IDENTITY
,
0
);
}
if
(
options
->
protocol
&
SSH_PROTO_2
)
{
len
=
2
+
strlen
(
_PATH_SSH_CLIENT_ID_RSA
)
+
1
;
options
->
identity_files
[
options
->
num_identity_files
]
=
xmalloc
(
len
);
snprintf
(
options
->
identity_files
[
options
->
num_identity_files
++
],
len
,
"~/%.100s"
,
_PATH_SSH_CLIENT_ID_RSA
);
len
=
2
+
strlen
(
_PATH_SSH_CLIENT_ID_DSA
)
+
1
;
options
->
identity_files
[
options
->
num_identity_files
]
=
xmalloc
(
len
);
snprintf
(
options
->
identity_files
[
options
->
num_identity_files
++
],
len
,
"~/%.100s"
,
_PATH_SSH_CLIENT_ID_DSA
);
add_identity_file
(
options
,
"~/"
,
_PATH_SSH_CLIENT_ID_RSA
,
0
);
add_identity_file
(
options
,
"~/"
,
_PATH_SSH_CLIENT_ID_DSA
,
0
);
#ifdef OPENSSL_HAS_ECC
len
=
2
+
strlen
(
_PATH_SSH_CLIENT_ID_ECDSA
)
+
1
;
options
->
identity_files
[
options
->
num_identity_files
]
=
xmalloc
(
len
);
snprintf
(
options
->
identity_files
[
options
->
num_identity_files
++
],
len
,
"~/%.100s"
,
_PATH_SSH_CLIENT_ID_ECDSA
);
add_identity_file
(
options
,
"~/"
,
_PATH_SSH_CLIENT_ID_ECDSA
,
0
);
#endif
}
}
...
...
readconf.h
View file @
7ae06c65
/* $OpenBSD: readconf.h,v 1.9
2
2013/02/
17 23:16:57
dtucker Exp $ */
/* $OpenBSD: readconf.h,v 1.9
3
2013/02/
22 04:45:09
dtucker Exp $ */
/*
* Author: Tatu Ylonen <ylo@cs.hut.fi>
...
...
@@ -149,13 +149,17 @@ typedef struct {
#define REQUEST_TTY_YES 2
#define REQUEST_TTY_FORCE 3
#define SSHCONF_CHECKPERM 1
/* check permissions on config file */
#define SSHCONF_USERCONF 2
/* user provided config file not system */
void
initialize_options
(
Options
*
);
void
fill_default_options
(
Options
*
);
int
read_config_file
(
const
char
*
,
const
char
*
,
Options
*
,
int
);
int
parse_forward
(
Forward
*
,
const
char
*
,
int
,
int
);
int
process_config_line
(
Options
*
,
const
char
*
,
char
*
,
const
char
*
,
int
,
int
*
);
process_config_line
(
Options
*
,
const
char
*
,
char
*
,
const
char
*
,
int
,
int
*
,
int
);
void
add_local_forward
(
Options
*
,
const
Forward
*
);
void
add_remote_forward
(
Options
*
,
const
Forward
*
);
...
...
ssh.c
View file @
7ae06c65
/* $OpenBSD: ssh.c,v 1.37
1
2013/02/
17 23:16:57 dtucker
Exp $ */
/* $OpenBSD: ssh.c,v 1.37
3
2013/02/
22 22:09:01 djm
Exp $ */
/*
* Author: Tatu Ylonen <ylo@cs.hut.fi>
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
...
...
@@ -579,7 +579,8 @@ main(int ac, char **av)
dummy
=
1
;
line
=
xstrdup
(
optarg
);
if
(
process_config_line
(
&
options
,
host
?
host
:
""
,
line
,
"command-line"
,
0
,
&
dummy
)
!=
0
)
line
,
"command-line"
,
0
,
&
dummy
,
SSHCONF_USERCONF
)
!=
0
)
exit
(
255
);
xfree
(
line
);
break
;
...
...
@@ -673,14 +674,15 @@ main(int ac, char **av)
* file if the user specifies a config file on the command line.
*/
if
(
config
!=
NULL
)
{
if
(
!
read_config_file
(
config
,
host
,
&
options
,
0
))
if
(
!
read_config_file
(
config
,
host
,
&
options
,
SSHCONF_USERCONF
))
fatal
(
"Can't open user config file %.100s: "
"%.100s"
,
config
,
strerror
(
errno
));
}
else
{
r
=
snprintf
(
buf
,
sizeof
buf
,
"%s/%s"
,
pw
->
pw_dir
,
_PATH_SSH_USER_CONFFILE
);
if
(
r
>
0
&&
(
size_t
)
r
<
sizeof
(
buf
))
(
void
)
read_config_file
(
buf
,
host
,
&
options
,
1
);
(
void
)
read_config_file
(
buf
,
host
,
&
options
,
SSHCONF_CHECKPERM
|
SSHCONF_USERCONF
);
/* Read systemwide configuration file after user config. */
(
void
)
read_config_file
(
_PATH_HOST_CONFIG_FILE
,
host
,
...
...
@@ -1534,7 +1536,8 @@ load_public_identity_files(void)
fatal
(
"load_public_identity_files: gethostname: %s"
,
strerror
(
errno
));
for
(
i
=
0
;
i
<
options
.
num_identity_files
;
i
++
)
{
if
(
n_ids
>=
SSH_MAX_IDENTITY_FILES
)
{
if
(
n_ids
>=
SSH_MAX_IDENTITY_FILES
||
strcasecmp
(
options
.
identity_files
[
i
],
"none"
)
==
0
)
{
xfree
(
options
.
identity_files
[
i
]);
continue
;
}
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment