diff -up openssh-6.1p1/auth-pam.c.coverity openssh-6.1p1/auth-pam.c --- openssh-6.1p1/auth-pam.c.coverity 2009-07-12 14:07:21.000000000 +0200 +++ openssh-6.1p1/auth-pam.c 2012-09-14 21:16:41.264906486 +0200 @@ -216,7 +216,12 @@ pthread_join(sp_pthread_t thread, void * if (sshpam_thread_status != -1) return (sshpam_thread_status); signal(SIGCHLD, sshpam_oldsig); - waitpid(thread, &status, 0); + while (waitpid(thread, &status, 0) < 0) { + if (errno == EINTR) + continue; + fatal("%s: waitpid: %s", __func__, + strerror(errno)); + } return (status); } #endif diff -up openssh-6.1p1/clientloop.c.coverity openssh-6.1p1/clientloop.c --- openssh-6.1p1/clientloop.c.coverity 2012-06-20 14:31:27.000000000 +0200 +++ openssh-6.1p1/clientloop.c 2012-09-14 21:16:41.267906501 +0200 @@ -2006,14 +2006,15 @@ client_input_global_request(int type, u_ char *rtype; int want_reply; int success = 0; +/* success is still 0 the packet is allways SSH2_MSG_REQUEST_FAILURE, isn't it? */ rtype = packet_get_string(NULL); want_reply = packet_get_char(); debug("client_input_global_request: rtype %s want_reply %d", rtype, want_reply); if (want_reply) { - packet_start(success ? - SSH2_MSG_REQUEST_SUCCESS : SSH2_MSG_REQUEST_FAILURE); + packet_start(/*success ? + SSH2_MSG_REQUEST_SUCCESS :*/ SSH2_MSG_REQUEST_FAILURE); packet_send(); packet_write_wait(); } diff -up openssh-6.1p1/channels.c.coverity openssh-6.1p1/channels.c --- openssh-6.1p1/channels.c.coverity 2012-04-23 10:21:05.000000000 +0200 +++ openssh-6.1p1/channels.c 2012-09-14 21:16:41.272906528 +0200 @@ -232,11 +232,11 @@ channel_register_fds(Channel *c, int rfd channel_max_fd = MAX(channel_max_fd, wfd); channel_max_fd = MAX(channel_max_fd, efd); - if (rfd != -1) + if (rfd >= 0) fcntl(rfd, F_SETFD, FD_CLOEXEC); - if (wfd != -1 && wfd != rfd) + if (wfd >= 0 && wfd != rfd) fcntl(wfd, F_SETFD, FD_CLOEXEC); - if (efd != -1 && efd != rfd && efd != wfd) + if (efd >= 0 && efd != rfd && efd != wfd) fcntl(efd, F_SETFD, FD_CLOEXEC); c->rfd = rfd; @@ -251,11 +251,11 @@ channel_register_fds(Channel *c, int rfd /* enable nonblocking mode */ if (nonblock) { - if (rfd != -1) + if (rfd >= 0) set_nonblock(rfd); - if (wfd != -1) + if (wfd >= 0) set_nonblock(wfd); - if (efd != -1) + if (efd >= 0) set_nonblock(efd); } } diff -up openssh-6.1p1/key.c.coverity openssh-6.1p1/key.c --- openssh-6.1p1/key.c.coverity 2012-06-30 12:05:02.000000000 +0200 +++ openssh-6.1p1/key.c 2012-09-14 21:16:41.274906537 +0200 @@ -808,8 +808,10 @@ key_read(Key *ret, char **cpp) success = 1; /*XXXX*/ key_free(k); +/*XXXX if (success != 1) break; +XXXX*/ /* advance cp: skip whitespace and data */ while (*cp == ' ' || *cp == '\t') cp++; diff -up openssh-6.1p1/monitor.c.coverity openssh-6.1p1/monitor.c --- openssh-6.1p1/monitor.c.coverity 2012-06-30 00:33:17.000000000 +0200 +++ openssh-6.1p1/monitor.c 2012-09-14 21:16:41.277906552 +0200 @@ -420,7 +420,7 @@ monitor_child_preauth(Authctxt *_authctx } /* Drain any buffered messages from the child */ - while (pmonitor->m_log_recvfd != -1 && monitor_read_log(pmonitor) == 0) + while (pmonitor->m_log_recvfd >= 0 && monitor_read_log(pmonitor) == 0) ; if (!authctxt->valid) @@ -1159,6 +1159,10 @@ mm_answer_keyallowed(int sock, Buffer *m break; } } + + debug3("%s: key %p is %s", + __func__, key, allowed ? "allowed" : "not allowed"); + if (key != NULL) key_free(key); @@ -1180,9 +1184,6 @@ mm_answer_keyallowed(int sock, Buffer *m xfree(chost); } - debug3("%s: key %p is %s", - __func__, key, allowed ? "allowed" : "not allowed"); - buffer_clear(m); buffer_put_int(m, allowed); buffer_put_int(m, forced_command != NULL); diff -up openssh-6.1p1/monitor_wrap.c.coverity openssh-6.1p1/monitor_wrap.c --- openssh-6.1p1/monitor_wrap.c.coverity 2011-06-20 06:42:23.000000000 +0200 +++ openssh-6.1p1/monitor_wrap.c 2012-09-14 21:16:41.280906568 +0200 @@ -707,10 +707,10 @@ mm_pty_allocate(int *ptyfd, int *ttyfd, if ((tmp1 = dup(pmonitor->m_recvfd)) == -1 || (tmp2 = dup(pmonitor->m_recvfd)) == -1) { error("%s: cannot allocate fds for pty", __func__); - if (tmp1 > 0) + if (tmp1 >= 0) close(tmp1); - if (tmp2 > 0) - close(tmp2); + /*DEAD CODE if (tmp2 >= 0) + close(tmp2);*/ return 0; } close(tmp1); diff -up openssh-6.1p1/openbsd-compat/bindresvport.c.coverity openssh-6.1p1/openbsd-compat/bindresvport.c --- openssh-6.1p1/openbsd-compat/bindresvport.c.coverity 2010-12-03 00:50:26.000000000 +0100 +++ openssh-6.1p1/openbsd-compat/bindresvport.c 2012-09-14 21:16:41.281906573 +0200 @@ -58,7 +58,7 @@ bindresvport_sa(int sd, struct sockaddr struct sockaddr_in6 *in6; u_int16_t *portp; u_int16_t port; - socklen_t salen; + socklen_t salen = sizeof(struct sockaddr_storage); int i; if (sa == NULL) { diff -up openssh-6.1p1/packet.c.coverity openssh-6.1p1/packet.c --- openssh-6.1p1/packet.c.coverity 2012-03-09 00:28:07.000000000 +0100 +++ openssh-6.1p1/packet.c 2012-09-14 21:16:41.284906588 +0200 @@ -1177,6 +1177,7 @@ packet_read_poll1(void) case DEATTACK_DETECTED: packet_disconnect("crc32 compensation attack: " "network attack detected"); + break; case DEATTACK_DOS_DETECTED: packet_disconnect("deattack denial of " "service detected"); @@ -1678,7 +1679,7 @@ void packet_write_wait(void) { fd_set *setp; - int ret, ms_remain; + int ret, ms_remain = 0; struct timeval start, timeout, *timeoutp = NULL; setp = (fd_set *)xcalloc(howmany(active_state->connection_out + 1, diff -up openssh-6.1p1/progressmeter.c.coverity openssh-6.1p1/progressmeter.c --- openssh-6.1p1/progressmeter.c.coverity 2006-08-05 04:39:40.000000000 +0200 +++ openssh-6.1p1/progressmeter.c 2012-09-14 21:16:41.285906593 +0200 @@ -65,7 +65,7 @@ static void update_progress_meter(int); static time_t start; /* start progress */ static time_t last_update; /* last progress update */ -static char *file; /* name of the file being transferred */ +static const char *file; /* name of the file being transferred */ static off_t end_pos; /* ending position of transfer */ static off_t cur_pos; /* transfer position as of last refresh */ static volatile off_t *counter; /* progress counter */ @@ -247,7 +247,7 @@ update_progress_meter(int ignore) } void -start_progress_meter(char *f, off_t filesize, off_t *ctr) +start_progress_meter(const char *f, off_t filesize, off_t *ctr) { start = last_update = time(NULL); file = f; diff -up openssh-6.1p1/progressmeter.h.coverity openssh-6.1p1/progressmeter.h --- openssh-6.1p1/progressmeter.h.coverity 2006-03-26 05:30:02.000000000 +0200 +++ openssh-6.1p1/progressmeter.h 2012-09-14 21:16:41.286906598 +0200 @@ -23,5 +23,5 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -void start_progress_meter(char *, off_t, off_t *); +void start_progress_meter(const char *, off_t, off_t *); void stop_progress_meter(void); diff -up openssh-6.1p1/scp.c.coverity openssh-6.1p1/scp.c --- openssh-6.1p1/scp.c.coverity 2011-09-22 13:38:01.000000000 +0200 +++ openssh-6.1p1/scp.c 2012-09-14 21:16:41.288906608 +0200 @@ -155,7 +155,7 @@ killchild(int signo) { if (do_cmd_pid > 1) { kill(do_cmd_pid, signo ? signo : SIGTERM); - waitpid(do_cmd_pid, NULL, 0); + (void) waitpid(do_cmd_pid, NULL, 0); } if (signo) diff -up openssh-6.1p1/servconf.c.coverity openssh-6.1p1/servconf.c --- openssh-6.1p1/servconf.c.coverity 2012-07-31 04:22:38.000000000 +0200 +++ openssh-6.1p1/servconf.c 2012-09-14 21:16:41.291906623 +0200 @@ -1249,7 +1249,7 @@ process_server_config_line(ServerOptions fatal("%s line %d: Missing subsystem name.", filename, linenum); if (!*activep) { - arg = strdelim(&cp); + /*arg =*/ (void) strdelim(&cp); break; } for (i = 0; i < options->num_subsystems; i++) @@ -1340,8 +1340,9 @@ process_server_config_line(ServerOptions if (*activep && *charptr == NULL) { *charptr = tilde_expand_filename(arg, getuid()); /* increase optional counter */ - if (intptr != NULL) - *intptr = *intptr + 1; + /* DEAD CODE intptr is still NULL ;) + if (intptr != NULL) + *intptr = *intptr + 1; */ } break; diff -up openssh-6.1p1/serverloop.c.coverity openssh-6.1p1/serverloop.c --- openssh-6.1p1/serverloop.c.coverity 2012-06-20 14:31:27.000000000 +0200 +++ openssh-6.1p1/serverloop.c 2012-09-14 21:16:41.294906638 +0200 @@ -147,13 +147,13 @@ notify_setup(void) static void notify_parent(void) { - if (notify_pipe[1] != -1) + if (notify_pipe[1] >= 0) write(notify_pipe[1], "", 1); } static void notify_prepare(fd_set *readset) { - if (notify_pipe[0] != -1) + if (notify_pipe[0] >= 0) FD_SET(notify_pipe[0], readset); } static void @@ -161,8 +161,8 @@ notify_done(fd_set *readset) { char c; - if (notify_pipe[0] != -1 && FD_ISSET(notify_pipe[0], readset)) - while (read(notify_pipe[0], &c, 1) != -1) + if (notify_pipe[0] >= 0 && FD_ISSET(notify_pipe[0], readset)) + while (read(notify_pipe[0], &c, 1) >= 0) debug2("notify_done: reading"); } @@ -336,7 +336,7 @@ wait_until_can_do_something(fd_set **rea * If we have buffered data, try to write some of that data * to the program. */ - if (fdin != -1 && buffer_len(&stdin_buffer) > 0) + if (fdin >= 0 && buffer_len(&stdin_buffer) > 0) FD_SET(fdin, *writesetp); } notify_prepare(*readsetp); @@ -476,7 +476,7 @@ process_output(fd_set *writeset) int len; /* Write buffered data to program stdin. */ - if (!compat20 && fdin != -1 && FD_ISSET(fdin, writeset)) { + if (!compat20 && fdin >= 0 && FD_ISSET(fdin, writeset)) { data = buffer_ptr(&stdin_buffer); dlen = buffer_len(&stdin_buffer); len = write(fdin, data, dlen); @@ -589,7 +589,7 @@ server_loop(pid_t pid, int fdin_arg, int set_nonblock(fdin); set_nonblock(fdout); /* we don't have stderr for interactive terminal sessions, see below */ - if (fderr != -1) + if (fderr >= 0) set_nonblock(fderr); if (!(datafellows & SSH_BUG_IGNOREMSG) && isatty(fdin)) @@ -613,7 +613,7 @@ server_loop(pid_t pid, int fdin_arg, int max_fd = MAX(connection_in, connection_out); max_fd = MAX(max_fd, fdin); max_fd = MAX(max_fd, fdout); - if (fderr != -1) + if (fderr >= 0) max_fd = MAX(max_fd, fderr); #endif @@ -643,7 +643,7 @@ server_loop(pid_t pid, int fdin_arg, int * If we have received eof, and there is no more pending * input data, cause a real eof by closing fdin. */ - if (stdin_eof && fdin != -1 && buffer_len(&stdin_buffer) == 0) { + if (stdin_eof && fdin >= 0 && buffer_len(&stdin_buffer) == 0) { if (fdin != fdout) close(fdin); else @@ -741,15 +741,15 @@ server_loop(pid_t pid, int fdin_arg, int buffer_free(&stderr_buffer); /* Close the file descriptors. */ - if (fdout != -1) + if (fdout >= 0) close(fdout); fdout = -1; fdout_eof = 1; - if (fderr != -1) + if (fderr >= 0) close(fderr); fderr = -1; fderr_eof = 1; - if (fdin != -1) + if (fdin >= 0) close(fdin); fdin = -1; @@ -943,7 +943,7 @@ server_input_window_size(int type, u_int debug("Window change received."); packet_check_eom(); - if (fdin != -1) + if (fdin >= 0) pty_change_window_size(fdin, row, col, xpixel, ypixel); } @@ -996,7 +996,7 @@ server_request_tun(void) } tun = packet_get_int(); - if (forced_tun_device != -1) { + if (forced_tun_device >= 0) { if (tun != SSH_TUNID_ANY && forced_tun_device != tun) goto done; tun = forced_tun_device; diff -up openssh-6.1p1/sftp.c.coverity openssh-6.1p1/sftp.c --- openssh-6.1p1/sftp.c.coverity 2012-06-30 00:33:32.000000000 +0200 +++ openssh-6.1p1/sftp.c 2012-09-14 21:16:41.297906653 +0200 @@ -206,7 +206,7 @@ killchild(int signo) { if (sshpid > 1) { kill(sshpid, SIGTERM); - waitpid(sshpid, NULL, 0); + (void) waitpid(sshpid, NULL, 0); } _exit(1); @@ -316,7 +316,7 @@ local_do_ls(const char *args) /* Strip one path (usually the pwd) from the start of another */ static char * -path_strip(char *path, char *strip) +path_strip(const char *path, const char *strip) { size_t len; @@ -334,7 +334,7 @@ path_strip(char *path, char *strip) } static char * -make_absolute(char *p, char *pwd) +make_absolute(char *p, const char *pwd) { char *abs_str; @@ -482,7 +482,7 @@ parse_df_flags(const char *cmd, char **a } static int -is_dir(char *path) +is_dir(const char *path) { struct stat sb; @@ -494,7 +494,7 @@ is_dir(char *path) } static int -remote_is_dir(struct sftp_conn *conn, char *path) +remote_is_dir(struct sftp_conn *conn, const char *path) { Attrib *a; @@ -508,7 +508,7 @@ remote_is_dir(struct sftp_conn *conn, ch /* Check whether path returned from glob(..., GLOB_MARK, ...) is a directory */ static int -pathname_is_dir(char *pathname) +pathname_is_dir(const char *pathname) { size_t l = strlen(pathname); @@ -516,7 +516,7 @@ pathname_is_dir(char *pathname) } static int -process_get(struct sftp_conn *conn, char *src, char *dst, char *pwd, +process_get(struct sftp_conn *conn, const char *src, const char *dst, const char *pwd, int pflag, int rflag) { char *abs_src = NULL; @@ -590,7 +590,7 @@ out: } static int -process_put(struct sftp_conn *conn, char *src, char *dst, char *pwd, +process_put(struct sftp_conn *conn, const char *src, const char *dst, const char *pwd, int pflag, int rflag) { char *tmp_dst = NULL; @@ -695,7 +695,7 @@ sdirent_comp(const void *aa, const void /* sftp ls.1 replacement for directories */ static int -do_ls_dir(struct sftp_conn *conn, char *path, char *strip_path, int lflag) +do_ls_dir(struct sftp_conn *conn, const char *path, const char *strip_path, int lflag) { int n; u_int c = 1, colspace = 0, columns = 1; @@ -780,7 +780,7 @@ do_ls_dir(struct sftp_conn *conn, char * /* sftp ls.1 replacement which handles path globs */ static int -do_globbed_ls(struct sftp_conn *conn, char *path, char *strip_path, +do_globbed_ls(struct sftp_conn *conn, const char *path, const char *strip_path, int lflag) { char *fname, *lname; @@ -861,7 +861,7 @@ do_globbed_ls(struct sftp_conn *conn, ch } static int -do_df(struct sftp_conn *conn, char *path, int hflag, int iflag) +do_df(struct sftp_conn *conn, const char *path, int hflag, int iflag) { struct sftp_statvfs st; char s_used[FMT_SCALED_STRSIZE]; diff -up openssh-6.1p1/sftp-client.c.coverity openssh-6.1p1/sftp-client.c --- openssh-6.1p1/sftp-client.c.coverity 2012-07-02 14:15:39.000000000 +0200 +++ openssh-6.1p1/sftp-client.c 2012-09-14 21:18:16.891332281 +0200 @@ -149,7 +149,7 @@ get_msg(struct sftp_conn *conn, Buffer * } static void -send_string_request(struct sftp_conn *conn, u_int id, u_int code, char *s, +send_string_request(struct sftp_conn *conn, u_int id, u_int code, const char *s, u_int len) { Buffer msg; @@ -165,7 +165,7 @@ send_string_request(struct sftp_conn *co static void send_string_attrs_request(struct sftp_conn *conn, u_int id, u_int code, - char *s, u_int len, Attrib *a) + const char *s, u_int len, Attrib *a) { Buffer msg; @@ -422,7 +422,7 @@ sftp_proto_version(struct sftp_conn *con } int -do_close(struct sftp_conn *conn, char *handle, u_int handle_len) +do_close(struct sftp_conn *conn, const char *handle, u_int handle_len) { u_int id, status; Buffer msg; @@ -447,7 +447,7 @@ do_close(struct sftp_conn *conn, char *h static int -do_lsreaddir(struct sftp_conn *conn, char *path, int printflag, +do_lsreaddir(struct sftp_conn *conn, const char *path, int printflag, SFTP_DIRENT ***dir) { Buffer msg; @@ -572,7 +572,7 @@ do_lsreaddir(struct sftp_conn *conn, cha } int -do_readdir(struct sftp_conn *conn, char *path, SFTP_DIRENT ***dir) +do_readdir(struct sftp_conn *conn, const char *path, SFTP_DIRENT ***dir) { return(do_lsreaddir(conn, path, 0, dir)); } @@ -590,7 +590,7 @@ void free_sftp_dirents(SFTP_DIRENT **s) } int -do_rm(struct sftp_conn *conn, char *path) +do_rm(struct sftp_conn *conn, const char *path) { u_int status, id; @@ -605,7 +605,7 @@ do_rm(struct sftp_conn *conn, char *path } int -do_mkdir(struct sftp_conn *conn, char *path, Attrib *a, int printflag) +do_mkdir(struct sftp_conn *conn, const char *path, Attrib *a, int printflag) { u_int status, id; @@ -621,7 +621,7 @@ do_mkdir(struct sftp_conn *conn, char *p } int -do_rmdir(struct sftp_conn *conn, char *path) +do_rmdir(struct sftp_conn *conn, const char *path) { u_int status, id; @@ -637,7 +637,7 @@ do_rmdir(struct sftp_conn *conn, char *p } Attrib * -do_stat(struct sftp_conn *conn, char *path, int quiet) +do_stat(struct sftp_conn *conn, const char *path, int quiet) { u_int id; @@ -651,7 +651,7 @@ do_stat(struct sftp_conn *conn, char *pa } Attrib * -do_lstat(struct sftp_conn *conn, char *path, int quiet) +do_lstat(struct sftp_conn *conn, const char *path, int quiet) { u_int id; @@ -685,7 +685,7 @@ do_fstat(struct sftp_conn *conn, char *h #endif int -do_setstat(struct sftp_conn *conn, char *path, Attrib *a) +do_setstat(struct sftp_conn *conn, const char *path, Attrib *a) { u_int status, id; @@ -702,7 +702,7 @@ do_setstat(struct sftp_conn *conn, char } int -do_fsetstat(struct sftp_conn *conn, char *handle, u_int handle_len, +do_fsetstat(struct sftp_conn *conn, const char *handle, u_int handle_len, Attrib *a) { u_int status, id; @@ -719,7 +719,7 @@ do_fsetstat(struct sftp_conn *conn, char } char * -do_realpath(struct sftp_conn *conn, char *path) +do_realpath(struct sftp_conn *conn, const char *path) { Buffer msg; u_int type, expected_id, count, id; @@ -768,7 +768,7 @@ do_realpath(struct sftp_conn *conn, char } int -do_rename(struct sftp_conn *conn, char *oldpath, char *newpath) +do_rename(struct sftp_conn *conn, const char *oldpath, const char *newpath) { Buffer msg; u_int status, id; @@ -802,7 +802,7 @@ do_rename(struct sftp_conn *conn, char * } int -do_hardlink(struct sftp_conn *conn, char *oldpath, char *newpath) +do_hardlink(struct sftp_conn *conn, const char *oldpath, const char *newpath) { Buffer msg; u_int status, id; @@ -835,7 +835,7 @@ do_hardlink(struct sftp_conn *conn, char } int -do_symlink(struct sftp_conn *conn, char *oldpath, char *newpath) +do_symlink(struct sftp_conn *conn, const char *oldpath, const char *newpath) { Buffer msg; u_int status, id; @@ -987,7 +987,7 @@ send_read_request(struct sftp_conn *conn } int -do_download(struct sftp_conn *conn, char *remote_path, char *local_path, +do_download(struct sftp_conn *conn, const char *remote_path, const char *local_path, Attrib *a, int pflag) { Attrib junk; @@ -1226,7 +1226,7 @@ do_download(struct sftp_conn *conn, char } static int -download_dir_internal(struct sftp_conn *conn, char *src, char *dst, +download_dir_internal(struct sftp_conn *conn, const char *src, const char *dst, Attrib *dirattrib, int pflag, int printflag, int depth) { int i, ret = 0; @@ -1316,7 +1316,7 @@ download_dir_internal(struct sftp_conn * } int -download_dir(struct sftp_conn *conn, char *src, char *dst, +download_dir(struct sftp_conn *conn, const char *src, const char *dst, Attrib *dirattrib, int pflag, int printflag) { char *src_canon; @@ -1334,7 +1334,7 @@ download_dir(struct sftp_conn *conn, cha } int -do_upload(struct sftp_conn *conn, char *local_path, char *remote_path, +do_upload(struct sftp_conn *conn, const char *local_path, const char *remote_path, int pflag) { int local_fd; @@ -1517,7 +1517,7 @@ do_upload(struct sftp_conn *conn, char * } static int -upload_dir_internal(struct sftp_conn *conn, char *src, char *dst, +upload_dir_internal(struct sftp_conn *conn, const char *src, const char *dst, int pflag, int printflag, int depth) { int ret = 0, status; @@ -1608,7 +1608,7 @@ upload_dir_internal(struct sftp_conn *co } int -upload_dir(struct sftp_conn *conn, char *src, char *dst, int printflag, +upload_dir(struct sftp_conn *conn, const char *src, const char *dst, int printflag, int pflag) { char *dst_canon; @@ -1625,7 +1625,7 @@ upload_dir(struct sftp_conn *conn, char } char * -path_append(char *p1, char *p2) +path_append(const char *p1, const char *p2) { char *ret; size_t len = strlen(p1) + strlen(p2) + 2; diff -up openssh-6.1p1/sftp-client.h.coverity openssh-6.1p1/sftp-client.h --- openssh-6.1p1/sftp-client.h.coverity 2010-12-04 23:02:48.000000000 +0100 +++ openssh-6.1p1/sftp-client.h 2012-09-14 21:16:41.301906674 +0200 @@ -56,49 +56,49 @@ struct sftp_conn *do_init(int, int, u_in u_int sftp_proto_version(struct sftp_conn *); /* Close file referred to by 'handle' */ -int do_close(struct sftp_conn *, char *, u_int); +int do_close(struct sftp_conn *, const char *, u_int); /* Read contents of 'path' to NULL-terminated array 'dir' */ -int do_readdir(struct sftp_conn *, char *, SFTP_DIRENT ***); +int do_readdir(struct sftp_conn *, const char *, SFTP_DIRENT ***); /* Frees a NULL-terminated array of SFTP_DIRENTs (eg. from do_readdir) */ void free_sftp_dirents(SFTP_DIRENT **); /* Delete file 'path' */ -int do_rm(struct sftp_conn *, char *); +int do_rm(struct sftp_conn *, const char *); /* Create directory 'path' */ -int do_mkdir(struct sftp_conn *, char *, Attrib *, int); +int do_mkdir(struct sftp_conn *, const char *, Attrib *, int); /* Remove directory 'path' */ -int do_rmdir(struct sftp_conn *, char *); +int do_rmdir(struct sftp_conn *, const char *); /* Get file attributes of 'path' (follows symlinks) */ -Attrib *do_stat(struct sftp_conn *, char *, int); +Attrib *do_stat(struct sftp_conn *, const char *, int); /* Get file attributes of 'path' (does not follow symlinks) */ -Attrib *do_lstat(struct sftp_conn *, char *, int); +Attrib *do_lstat(struct sftp_conn *, const char *, int); /* Set file attributes of 'path' */ -int do_setstat(struct sftp_conn *, char *, Attrib *); +int do_setstat(struct sftp_conn *, const char *, Attrib *); /* Set file attributes of open file 'handle' */ -int do_fsetstat(struct sftp_conn *, char *, u_int, Attrib *); +int do_fsetstat(struct sftp_conn *, const char *, u_int, Attrib *); /* Canonicalise 'path' - caller must free result */ -char *do_realpath(struct sftp_conn *, char *); +char *do_realpath(struct sftp_conn *, const char *); /* Get statistics for filesystem hosting file at "path" */ int do_statvfs(struct sftp_conn *, const char *, struct sftp_statvfs *, int); /* Rename 'oldpath' to 'newpath' */ -int do_rename(struct sftp_conn *, char *, char *); +int do_rename(struct sftp_conn *, const char *, const char *); /* Link 'oldpath' to 'newpath' */ -int do_hardlink(struct sftp_conn *, char *, char *); +int do_hardlink(struct sftp_conn *, const char *, const char *); -/* Rename 'oldpath' to 'newpath' */ -int do_symlink(struct sftp_conn *, char *, char *); +/* Symlink 'oldpath' to 'newpath' */ +int do_symlink(struct sftp_conn *, const char *, const char *); /* XXX: add callbacks to do_download/do_upload so we can do progress meter */ @@ -106,27 +106,27 @@ int do_symlink(struct sftp_conn *, char * Download 'remote_path' to 'local_path'. Preserve permissions and times * if 'pflag' is set */ -int do_download(struct sftp_conn *, char *, char *, Attrib *, int); +int do_download(struct sftp_conn *, const char *, const char *, Attrib *, int); /* * Recursively download 'remote_directory' to 'local_directory'. Preserve * times if 'pflag' is set */ -int download_dir(struct sftp_conn *, char *, char *, Attrib *, int, int); +int download_dir(struct sftp_conn *, const char *, const char *, Attrib *, int, int); /* * Upload 'local_path' to 'remote_path'. Preserve permissions and times * if 'pflag' is set */ -int do_upload(struct sftp_conn *, char *, char *, int); +int do_upload(struct sftp_conn *, const char *, const char *, int); /* * Recursively upload 'local_directory' to 'remote_directory'. Preserve * times if 'pflag' is set */ -int upload_dir(struct sftp_conn *, char *, char *, int, int); +int upload_dir(struct sftp_conn *, const char *, const char *, int, int); /* Concatenate paths, taking care of slashes. Caller must free result. */ -char *path_append(char *, char *); +char *path_append(const char *, const char *); #endif diff -up openssh-6.1p1/ssh-agent.c.coverity openssh-6.1p1/ssh-agent.c --- openssh-6.1p1/ssh-agent.c.coverity 2011-06-03 06:14:16.000000000 +0200 +++ openssh-6.1p1/ssh-agent.c 2012-09-14 21:16:41.303906683 +0200 @@ -1147,8 +1147,8 @@ main(int ac, char **av) sanitise_stdfd(); /* drop */ - setegid(getgid()); - setgid(getgid()); + (void) setegid(getgid()); + (void) setgid(getgid()); #if defined(HAVE_PRCTL) && defined(PR_SET_DUMPABLE) /* Disable ptrace on Linux without sgid bit */ diff -up openssh-6.1p1/sshd.c.coverity openssh-6.1p1/sshd.c --- openssh-6.1p1/sshd.c.coverity 2012-07-31 04:21:34.000000000 +0200 +++ openssh-6.1p1/sshd.c 2012-09-14 21:16:41.307906705 +0200 @@ -682,8 +682,10 @@ privsep_preauth(Authctxt *authctxt) if (getuid() == 0 || geteuid() == 0) privsep_preauth_child(); setproctitle("%s", "[net]"); - if (box != NULL) + if (box != NULL) { ssh_sandbox_child(box); + xfree(box); + } return 0; } @@ -1311,6 +1313,9 @@ server_accept_loop(int *sock_in, int *so if (num_listen_socks < 0) break; } + + if (fdset != NULL) + xfree(fdset); } @@ -1768,7 +1773,7 @@ main(int ac, char **av) /* Chdir to the root directory so that the current disk can be unmounted if desired. */ - chdir("/"); + (void) chdir("/"); /* ignore SIGPIPE */ signal(SIGPIPE, SIG_IGN);