370 lines
11 KiB
C
370 lines
11 KiB
C
$NetBSD: patch-rsshconf.c,v 1.1 2012/11/01 19:30:58 joerg Exp $
|
|
|
|
--- rsshconf.c.orig 2012-10-30 19:27:54.000000000 +0000
|
|
+++ rsshconf.c
|
|
@@ -78,7 +78,7 @@ const char *keywords[] = {
|
|
NULL
|
|
};
|
|
|
|
-int log=0;
|
|
+int my_log=0;
|
|
|
|
/* flag to tell config parser to stop processing config file */
|
|
static bool got_user_config = FALSE;
|
|
@@ -132,11 +132,11 @@ int read_shell_config( ShellOptions_t *o
|
|
int status = TRUE; /* were all the cfg lines good? */
|
|
char line[CFG_LINE_LEN + 1]; /* buffer to hold region */
|
|
|
|
- log = do_log;
|
|
+ my_log = do_log;
|
|
memset(line, 0, CFG_LINE_LEN + 1);
|
|
cfg_file = fopen(filename, "r");
|
|
if (!cfg_file) {
|
|
- if (log){
|
|
+ if (my_log){
|
|
log_set_priority(LOG_WARNING);
|
|
log_msg("config file (%s) missing, using defaults",
|
|
filename);
|
|
@@ -174,7 +174,7 @@ int process_config_line( ShellOptions_t
|
|
*newline = '\0';
|
|
else {
|
|
/* there is no newline - log the error and find the EOL */
|
|
- if (log){
|
|
+ if (my_log){
|
|
log_set_priority(LOG_ERR);
|
|
log_msg("line %d: line too long", lineno);
|
|
}
|
|
@@ -241,12 +241,12 @@ int process_config_line( ShellOptions_t
|
|
return TRUE;
|
|
default:
|
|
/* the keyword is unknown */
|
|
- if (log){
|
|
+ if (my_log){
|
|
log_set_priority(LOG_ERR);
|
|
log_msg("line %d: syntax error parsing config file",
|
|
lineno);
|
|
}
|
|
- if ( keywrd[0] && log )
|
|
+ if ( keywrd[0] && my_log )
|
|
log_msg("unknown keyword: %s", keywrd);
|
|
return FALSE;
|
|
}
|
|
@@ -330,7 +330,7 @@ int get_token( const char *str, char *bu
|
|
/* initialize strings and pointers */
|
|
memset(buf, 0, buflen);
|
|
if ( !(copy = strdup(str)) ){
|
|
- if (log){
|
|
+ if (my_log){
|
|
log_set_priority(LOG_ERR);
|
|
log_msg("OOM error in get_token() (fatal)");
|
|
}
|
|
@@ -433,11 +433,11 @@ int process_allow_scp( ShellOptions_t *o
|
|
const int lineno )
|
|
{
|
|
if ( !eat_comment(line) ){
|
|
- if (log) log_msg("line %d: syntax error parsing config file",
|
|
+ if (my_log) log_msg("line %d: syntax error parsing config file",
|
|
lineno);
|
|
return FALSE;
|
|
}
|
|
- if (log){
|
|
+ if (my_log){
|
|
log_set_priority(LOG_INFO);
|
|
log_msg("allowing scp to all users");
|
|
}
|
|
@@ -460,11 +460,11 @@ int process_allow_sftp( ShellOptions_t *
|
|
int pos;
|
|
|
|
if ( !(pos = eat_comment(line)) ){
|
|
- if (log) log_msg("line %d: syntax error parsing config file",
|
|
+ if (my_log) log_msg("line %d: syntax error parsing config file",
|
|
lineno);
|
|
return FALSE;
|
|
}
|
|
- if (log){
|
|
+ if (my_log){
|
|
log_set_priority(LOG_INFO);
|
|
log_msg("allowing sftp to all users");
|
|
}
|
|
@@ -488,11 +488,11 @@ int process_allow_cvs( ShellOptions_t *o
|
|
int pos;
|
|
|
|
if ( !(pos = eat_comment(line)) ){
|
|
- if (log) log_msg("line %d: syntax error parsing config file",
|
|
+ if (my_log) log_msg("line %d: syntax error parsing config file",
|
|
lineno);
|
|
return FALSE;
|
|
}
|
|
- if (log){
|
|
+ if (my_log){
|
|
log_set_priority(LOG_INFO);
|
|
log_msg("allowing cvs to all users");
|
|
}
|
|
@@ -516,12 +516,12 @@ int process_allow_rdist( ShellOptions_t
|
|
int pos;
|
|
|
|
if ( !(pos = eat_comment(line)) ){
|
|
- if (log) log_msg("line %d: syntax error parsing config file",
|
|
+ if (my_log) log_msg("line %d: syntax error parsing config file",
|
|
lineno);
|
|
return FALSE;
|
|
}
|
|
log_set_priority(LOG_INFO);
|
|
- if (log){
|
|
+ if (my_log){
|
|
log_msg("allowing rdist to all users");
|
|
opts->shell_flags |= RSSH_ALLOW_RDIST;
|
|
}
|
|
@@ -544,11 +544,11 @@ int process_allow_rsync( ShellOptions_t
|
|
int pos;
|
|
|
|
if ( !(pos = eat_comment(line)) ){
|
|
- if (log) log_msg("line %d: syntax error parsing config file",
|
|
+ if (my_log) log_msg("line %d: syntax error parsing config file",
|
|
lineno);
|
|
return FALSE;
|
|
}
|
|
- if (log){
|
|
+ if (my_log){
|
|
log_set_priority(LOG_INFO);
|
|
log_msg("allowing rsync to all users");
|
|
}
|
|
@@ -573,7 +573,7 @@ int process_chroot_path( ShellOptions_t
|
|
*/
|
|
|
|
if ( !(temp = (char *)malloc(CFG_LINE_LEN + 1)) ){
|
|
- if (log) log_msg("fatal error: can't allocate space for chroot path");
|
|
+ if (my_log) log_msg("fatal error: can't allocate space for chroot path");
|
|
exit(1);
|
|
}
|
|
/* get_asgn_param() eats trailing comments, so we won't */
|
|
@@ -584,7 +584,7 @@ int process_chroot_path( ShellOptions_t
|
|
|
|
/* get rid of any old value for chroot path, assign new one */
|
|
if ( opts->chroot_path ) free(opts->chroot_path);
|
|
- if (log){
|
|
+ if (my_log){
|
|
log_set_priority(LOG_INFO);
|
|
log_msg("chrooting all users to %s", temp);
|
|
}
|
|
@@ -605,7 +605,7 @@ int process_log_facility( ShellOptions_t
|
|
int pos;
|
|
|
|
if ( !(temp = (char *)malloc(CFG_LINE_LEN + 1)) ){
|
|
- if (log){
|
|
+ if (my_log){
|
|
log_set_priority(LOG_ERR);
|
|
log_msg("fatal error: can't allocate space for log facility");
|
|
}
|
|
@@ -778,17 +778,17 @@ int process_log_facility( ShellOptions_t
|
|
|
|
free(temp);
|
|
if ( !eat_comment(line + pos) ){
|
|
- if (log) log_msg("line %d: syntax error parsing config file",
|
|
+ if (my_log) log_msg("line %d: syntax error parsing config file",
|
|
lineno);
|
|
return FALSE;
|
|
}
|
|
if ( facname ){
|
|
log_set_priority(LOG_INFO);
|
|
- if (log) log_msg("setting log facility to %s", facname);
|
|
+ if (my_log) log_msg("setting log facility to %s", facname);
|
|
log_set_facility(fac);
|
|
return TRUE;
|
|
}
|
|
- if (log){
|
|
+ if (my_log){
|
|
log_msg("line %d: unknown log facility specified", lineno);
|
|
log_set_facility(LOG_USER);
|
|
}
|
|
@@ -804,7 +804,7 @@ int process_umask( ShellOptions_t *opts,
|
|
int mask; /* umask */
|
|
|
|
if ( !(temp = (char *)malloc(CFG_LINE_LEN + 1)) ){
|
|
- if (log){
|
|
+ if (my_log){
|
|
log_set_priority(LOG_ERR);
|
|
log_msg("fatal error: can't allocate space in process_umask()");
|
|
}
|
|
@@ -818,7 +818,7 @@ int process_umask( ShellOptions_t *opts,
|
|
|
|
/* convert the umask to a number */
|
|
if ( !validate_umask(temp, &mask) ){
|
|
- if (log){
|
|
+ if (my_log){
|
|
log_set_priority(LOG_WARNING);
|
|
log_msg("line %d: invalid umask specified, using default 077",
|
|
lineno);
|
|
@@ -827,7 +827,7 @@ int process_umask( ShellOptions_t *opts,
|
|
free(temp);
|
|
return FALSE;
|
|
}
|
|
- if (log){
|
|
+ if (my_log){
|
|
log_set_priority(LOG_INFO);
|
|
log_msg("setting umask to %#o", mask);
|
|
}
|
|
@@ -857,7 +857,7 @@ int process_user( ShellOptions_t *opts,
|
|
|
|
/* make space for user options */
|
|
if ( !(temp = (char *)malloc(CFG_LINE_LEN + 1)) ){
|
|
- if (log) log_msg("fatal error: can't allocate space for user options");
|
|
+ if (my_log) log_msg("fatal error: can't allocate space for user options");
|
|
exit(1);
|
|
}
|
|
|
|
@@ -871,7 +871,7 @@ int process_user( ShellOptions_t *opts,
|
|
|
|
/* now process individual config bits of temp */
|
|
if ( !(pos = get_token(temp, user, CFG_LINE_LEN + 1, TRUE, TRUE )) ){
|
|
- if (log){
|
|
+ if (my_log){
|
|
log_set_priority(LOG_ERR);
|
|
log_msg("syntax error parsing config file, line %d",
|
|
lineno);
|
|
@@ -888,12 +888,12 @@ int process_user( ShellOptions_t *opts,
|
|
* user lines we don't care about...
|
|
*/
|
|
if ( (strcmp(user, username)) ) return TRUE;
|
|
- if (log){
|
|
+ if (my_log){
|
|
log_set_priority(LOG_INFO);
|
|
log_msg("line %d: configuring user %s", lineno, user);
|
|
}
|
|
if ( !(len = eat_colon(temp + pos)) ){
|
|
- if (log) log_msg("syntax error parsing config file: line %d ",
|
|
+ if (my_log) log_msg("syntax error parsing config file: line %d ",
|
|
lineno);
|
|
return FALSE;
|
|
}
|
|
@@ -902,7 +902,7 @@ int process_user( ShellOptions_t *opts,
|
|
/* do the umask, but validate it last, since it's non-fatal */
|
|
if ( !(len = get_token(temp + pos, mask, CFG_LINE_LEN + 1,
|
|
TRUE, FALSE)) ){
|
|
- if (log){
|
|
+ if (my_log){
|
|
log_set_priority(LOG_ERR);
|
|
log_msg("syntax error parsing user umask, line %d", lineno);
|
|
}
|
|
@@ -912,14 +912,14 @@ int process_user( ShellOptions_t *opts,
|
|
|
|
/* do the access bits */
|
|
if ( !(len = eat_colon(temp + pos)) ){
|
|
- if (log) log_msg("syntax error parsing config file: line %d ",
|
|
+ if (my_log) log_msg("syntax error parsing config file: line %d ",
|
|
lineno);
|
|
return FALSE;
|
|
}
|
|
pos += len;
|
|
if ( !(len = get_token(temp + pos, axs, CFG_LINE_LEN + 1,
|
|
TRUE, FALSE)) ){
|
|
- if (log){
|
|
+ if (my_log){
|
|
log_set_priority(LOG_ERR);
|
|
log_msg("syntax error parsing user access, line %d", lineno);
|
|
}
|
|
@@ -927,7 +927,7 @@ int process_user( ShellOptions_t *opts,
|
|
}
|
|
if ( !validate_access(axs, &allow_sftp, &allow_scp, &allow_cvs,
|
|
&allow_rdist, &allow_rsync) ){
|
|
- if (log){
|
|
+ if (my_log){
|
|
log_set_priority(LOG_ERR);
|
|
log_msg("syntax error parsing access bits, line %d", lineno);
|
|
}
|
|
@@ -939,7 +939,7 @@ int process_user( ShellOptions_t *opts,
|
|
if ( !(len = eat_colon(temp + pos)) ) goto cleanup;
|
|
pos += len;
|
|
if ( !(path = (char *)malloc(CFG_LINE_LEN + 1)) ){
|
|
- if (log) log_msg("fatal error: can't allocate space for chroot path");
|
|
+ if (my_log) log_msg("fatal error: can't allocate space for chroot path");
|
|
exit(1);
|
|
}
|
|
if ( !(len = get_token(temp + pos, path, CFG_LINE_LEN + 1,
|
|
@@ -953,7 +953,7 @@ cleanup:
|
|
/* make sure nothing is left */
|
|
while ( *(temp + pos) != '\0' && isspace(*(temp + pos)) ) pos++;
|
|
if ( *(temp + pos) != '\0' ){
|
|
- if (log){
|
|
+ if (my_log){
|
|
log_set_priority(LOG_ERR);
|
|
log_msg("syntax error parsing user config: line %d", lineno);
|
|
}
|
|
@@ -962,14 +962,14 @@ cleanup:
|
|
|
|
/* now finally validate the umask */
|
|
if ( !validate_umask(mask, &tmpmask) ){
|
|
- if (log){
|
|
+ if (my_log){
|
|
log_set_priority(LOG_WARNING);
|
|
log_msg("line %d: invalid umask specified, using default",
|
|
lineno);
|
|
}
|
|
tmpmask = 077;
|
|
}
|
|
- if (log){
|
|
+ if (my_log){
|
|
log_set_priority(LOG_INFO);
|
|
log_msg("setting %s's umask to %#o", user, tmpmask);
|
|
}
|
|
@@ -981,27 +981,27 @@ cleanup:
|
|
opts->shell_flags = 0;
|
|
/* now set the user-specific flags */
|
|
if ( allow_scp ){
|
|
- if (log) log_msg("allowing scp to user %s", user);
|
|
+ if (my_log) log_msg("allowing scp to user %s", user);
|
|
opts->shell_flags |= RSSH_ALLOW_SCP;
|
|
}
|
|
if ( allow_sftp ){
|
|
- if (log) log_msg("allowing sftp to user %s", user);
|
|
+ if (my_log) log_msg("allowing sftp to user %s", user);
|
|
opts->shell_flags |= RSSH_ALLOW_SFTP;
|
|
}
|
|
if ( allow_cvs ){
|
|
- if (log) log_msg("allowing cvs to user %s", user);
|
|
+ if (my_log) log_msg("allowing cvs to user %s", user);
|
|
opts->shell_flags |= RSSH_ALLOW_CVS;
|
|
}
|
|
if ( allow_rdist ){
|
|
- if (log) log_msg("allowing rdist to user %s", user);
|
|
+ if (my_log) log_msg("allowing rdist to user %s", user);
|
|
opts->shell_flags |= RSSH_ALLOW_RDIST;
|
|
}
|
|
if ( allow_rsync ){
|
|
- if (log) log_msg("allowing rsync to user %s", user);
|
|
+ if (my_log) log_msg("allowing rsync to user %s", user);
|
|
opts->shell_flags |= RSSH_ALLOW_RSYNC;
|
|
}
|
|
if ( path ){
|
|
- if (log) log_msg("chrooting %s to %s", user, path);
|
|
+ if (my_log) log_msg("chrooting %s to %s", user, path);
|
|
opts->shell_flags |= RSSH_USE_CHROOT;
|
|
}
|
|
opts->chroot_path = path;
|
|
@@ -1020,7 +1020,7 @@ int get_asgn_param( const char *line,
|
|
|
|
/* make sure '=' is next token, otherwise syntax error */
|
|
if ( (pos = eat_assignment(line)) <= 0 ){
|
|
- if (log){
|
|
+ if (my_log){
|
|
log_set_priority(LOG_ERR);
|
|
log_msg("error parsing config file at line %d: "
|
|
"assignment expected", lineno);
|
|
@@ -1029,7 +1029,7 @@ int get_asgn_param( const char *line,
|
|
}
|
|
/* get the string parameter of the assignment */
|
|
if ( !(len = get_token((line + pos), buf, buflen, FALSE, FALSE)) ){
|
|
- if (log){
|
|
+ if (my_log){
|
|
log_set_priority(LOG_ERR);
|
|
log_msg("syntax error parsing config file, line %d",
|
|
lineno);
|
|
@@ -1039,7 +1039,7 @@ int get_asgn_param( const char *line,
|
|
pos += len;
|
|
/* check for ending comment */
|
|
if ( !eat_comment(line + pos) ){
|
|
- if (log){
|
|
+ if (my_log){
|
|
log_set_priority(LOG_ERR);
|
|
log_msg("syntax error parsing config file at line %d",
|
|
lineno);
|