cppcheck found these, are they worth fixing?
In the non-fail case, done is set to NULL and then free()d.
free(NULL) is legal but maybe worth removing?
diff --git usr.bin/ssh/scp.c usr.bin/ssh/scp.c
index f0f09bba623..acb7bd8a8a1 100644
--- usr.bin/ssh/scp.c
+++ usr.bin/ssh/scp.c
@@ -935,19 +935,21 @@ brace_expand(const char *pattern, char ***patternsp,
size_t *npatternsp)
*npatternsp = ndone;
done = NULL;
ndone = 0;
ret = 0;
fail:
for (i = 0; i < nactive; i++)
free(active[i]);
free(active);
- for (i = 0; i < ndone; i++)
- free(done[i]);
- free(done);
+ if (done) {
+ for (i = 0; i < ndone; i++)
+ free(done[i]);
+ free(done);
+ }
return ret;
}
static struct sftp_conn *
do_sftp_connect(char *host, char *user, int port, char *sftp_direct,
int *reminp, int *remoutp, int *pidp)
{
if (sftp_direct == NULL) {
grp == NULL fatal()s, so remove the ternary operations that will
never be the conditionals they aspire to be.
diff --git usr.bin/ssh/sshpty.c usr.bin/ssh/sshpty.c
index faf8960cfb5..690263a8cf3 100644
--- usr.bin/ssh/sshpty.c
+++ usr.bin/ssh/sshpty.c
@@ -143,8 +143,8 @@ pty_setowner(struct passwd *pw, const char *tty)
grp = getgrnam("tty");
if (grp == NULL)
fatal("no tty group");
- gid = (grp != NULL) ? grp->gr_gid : pw->pw_gid;
- mode = (grp != NULL) ? 0620 : 0600;
+ gid = grp->gr_gid;
+ mode = 0620;
/*
* Change owner and mode of the tty as required.
These parentheses checking the result of an assignment were
confusing, so move them.
diff --git usr.bin/ssh/authfd.c usr.bin/ssh/authfd.c
index 4b81b385637..05011f8c5c9 100644
--- usr.bin/ssh/authfd.c
+++ usr.bin/ssh/authfd.c
@@ -489,8 +489,8 @@ encode_dest_constraint(struct sshbuf *m, const struct
dest_constraint *dc)
if ((b = sshbuf_new()) == NULL)
return SSH_ERR_ALLOC_FAIL;
- if ((r = encode_dest_constraint_hop(b, &dc->from) != 0) ||
- (r = encode_dest_constraint_hop(b, &dc->to) != 0) ||
+ if ((r = encode_dest_constraint_hop(b, &dc->from)) != 0 ||
+ (r = encode_dest_constraint_hop(b, &dc->to)) != 0 ||
(r = sshbuf_put_string(b, NULL, 0)) != 0) /* reserved */
goto out;
if ((r = sshbuf_put_stringb(m, b)) != 0)
diff --git usr.bin/ssh/readconf.c usr.bin/ssh/readconf.c
index e9d3a756896..81456c9b6d3 100644
--- usr.bin/ssh/readconf.c
+++ usr.bin/ssh/readconf.c
@@ -602,7 +602,7 @@ match_cfg_line(Options *options, char **condition, struct
passwd *pw,
}
arg = criteria = NULL;
this_result = 1;
- if ((negate = attrib[0] == '!'))
+ if ((negate = (attrib[0] == '!')))
attrib++;
/* Criterion "all" has no argument and must appear alone */
if (strcasecmp(attrib, "all") == 0) {
diff --git usr.bin/ssh/ssh-agent.c usr.bin/ssh/ssh-agent.c
index 0e4d7f675ab..de1cdb049a2 100644
--- usr.bin/ssh/ssh-agent.c
+++ usr.bin/ssh/ssh-agent.c
@@ -1010,8 +1010,8 @@ parse_dest_constraint(struct sshbuf *m, struct
dest_constraint *dc)
error_fr(r, "parse");
goto out;
}
- if ((r = parse_dest_constraint_hop(frombuf, &dc->from) != 0) ||
- (r = parse_dest_constraint_hop(tobuf, &dc->to) != 0))
+ if ((r = parse_dest_constraint_hop(frombuf, &dc->from)) != 0 ||
+ (r = parse_dest_constraint_hop(tobuf, &dc->to)) != 0)
goto out; /* already logged */
if (elen != 0) {
error_f("unsupported extensions (len %zu)", elen);