- djm@cvs.openbsd.org 2010/01/13 03:48:13

[servconf.c servconf.h sshd.c]
     avoid run-time failures when specifying hostkeys via a relative
     path by prepending the cwd in these cases; bz#1290; ok dtucker@
This commit is contained in:
Darren Tucker 2010-01-13 22:44:29 +11:00
parent 2901e2daeb
commit 88b6fb2b55
4 changed files with 27 additions and 5 deletions

View File

@ -22,6 +22,10 @@
[sftp.c sftp-server.c sftp.1 sftp-common.c sftp-common.h] [sftp.c sftp-server.c sftp.1 sftp-common.c sftp-common.h]
support '-h' (human-readable units) for sftp's ls command, just like support '-h' (human-readable units) for sftp's ls command, just like
ls(1); ok dtucker@ ls(1); ok dtucker@
- djm@cvs.openbsd.org 2010/01/13 03:48:13
[servconf.c servconf.h sshd.c]
avoid run-time failures when specifying hostkeys via a relative
path by prepending the cwd in these cases; bz#1290; ok dtucker@
20100112 20100112
- (dtucker) OpenBSD CVS Sync - (dtucker) OpenBSD CVS Sync

View File

@ -1,4 +1,4 @@
/* $OpenBSD: servconf.c,v 1.201 2010/01/10 03:51:17 dtucker Exp $ */ /* $OpenBSD: servconf.c,v 1.202 2010/01/13 03:48:12 djm Exp $ */
/* /*
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
* All rights reserved * All rights reserved
@ -459,6 +459,22 @@ parse_token(const char *cp, const char *filename,
return sBadOption; return sBadOption;
} }
char *
derelativise_path(const char *path)
{
char *expanded, *ret, *cwd;
expanded = tilde_expand_filename(path, getuid());
if (*expanded == '/')
return expanded;
if ((cwd = getcwd(NULL, 0)) == NULL)
fatal("%s: getcwd: %s", __func__, strerror(errno));
xasprintf(&ret, "%s/%s", cwd, expanded);
xfree(cwd);
xfree(expanded);
return ret;
}
static void static void
add_listen_addr(ServerOptions *options, char *addr, int port) add_listen_addr(ServerOptions *options, char *addr, int port)
{ {
@ -793,7 +809,7 @@ process_server_config_line(ServerOptions *options, char *line,
fatal("%s line %d: missing file name.", fatal("%s line %d: missing file name.",
filename, linenum); filename, linenum);
if (*activep && *charptr == NULL) { if (*activep && *charptr == NULL) {
*charptr = tilde_expand_filename(arg, getuid()); *charptr = derelativise_path(arg);
/* increase optional counter */ /* increase optional counter */
if (intptr != NULL) if (intptr != NULL)
*intptr = *intptr + 1; *intptr = *intptr + 1;

View File

@ -1,4 +1,4 @@
/* $OpenBSD: servconf.h,v 1.89 2010/01/09 23:04:13 dtucker Exp $ */ /* $OpenBSD: servconf.h,v 1.90 2010/01/13 03:48:13 djm Exp $ */
/* /*
* Author: Tatu Ylonen <ylo@cs.hut.fi> * Author: Tatu Ylonen <ylo@cs.hut.fi>
@ -164,5 +164,6 @@ void parse_server_match_config(ServerOptions *, const char *, const char *,
const char *); const char *);
void copy_set_server_options(ServerOptions *, ServerOptions *, int); void copy_set_server_options(ServerOptions *, ServerOptions *, int);
void dump_config(ServerOptions *); void dump_config(ServerOptions *);
char *derelativise_path(const char *);
#endif /* SERVCONF_H */ #endif /* SERVCONF_H */

5
sshd.c
View File

@ -1,4 +1,4 @@
/* $OpenBSD: sshd.c,v 1.370 2010/01/09 23:04:13 dtucker Exp $ */ /* $OpenBSD: sshd.c,v 1.371 2010/01/13 03:48:13 djm Exp $ */
/* /*
* Author: Tatu Ylonen <ylo@cs.hut.fi> * Author: Tatu Ylonen <ylo@cs.hut.fi>
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@ -1351,7 +1351,8 @@ main(int ac, char **av)
fprintf(stderr, "too many host keys.\n"); fprintf(stderr, "too many host keys.\n");
exit(1); exit(1);
} }
options.host_key_files[options.num_host_key_files++] = optarg; options.host_key_files[options.num_host_key_files++] =
derelativise_path(optarg);
break; break;
case 't': case 't':
test_flag = 1; test_flag = 1;