Skip to content

Commit

Permalink
Make sure memory is freed on errors in krb5_rc_io_fetch
Browse files Browse the repository at this point in the history
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@3284 dc483132-0cff-0310-8789-dd5450dbe970
  • Loading branch information
tytso committed Dec 24, 1993
1 parent 9d42b79 commit 58c037f
Showing 1 changed file with 27 additions and 11 deletions.
38 changes: 27 additions & 11 deletions src/lib/krb5/rcache/rc_dfl.c
Original file line number Diff line number Diff line change
Expand Up @@ -291,6 +291,8 @@ krb5_error_code krb5_rc_io_fetch(t, rep, maxlen)
{
int len;
krb5_error_code retval;

rep->client = rep->server = 0;

retval = krb5_rc_io_read (&t->d, (krb5_pointer) &len, sizeof(len));
if (retval)
Expand All @@ -304,29 +306,43 @@ krb5_error_code krb5_rc_io_fetch(t, rep, maxlen)
return KRB5_RC_MALLOC;

retval = krb5_rc_io_read (&t->d, (krb5_pointer) rep->client, len);
if (retval)
return retval;
if (retval)
goto errout;

retval = krb5_rc_io_read (&t->d, (krb5_pointer) &len, sizeof(len));
if (retval)
return retval;
if (retval)
goto errout;

if ((len <= 0) || (len >= maxlen))
return KRB5_RC_IO_EOF;
if ((len <= 0) || (len >= maxlen)) {
retval = KRB5_RC_IO_EOF;
goto errout;
}

rep->server = malloc (len);
if (!rep->server)
return KRB5_RC_MALLOC;
if (!rep->server) {
retval = KRB5_RC_MALLOC;
goto errout;
}

retval = krb5_rc_io_read (&t->d, (krb5_pointer) rep->server, len);
if (retval)
return retval;
if (retval)
goto errout;

retval = krb5_rc_io_read (&t->d, (krb5_pointer) &rep->cusec, sizeof(rep->cusec));
if (retval)
return retval;
goto errout;

retval = krb5_rc_io_read (&t->d, (krb5_pointer) &rep->ctime, sizeof(rep->ctime));
if (retval)
goto errout;

return 0;

errout:
if (rep->client)
krb5_xfree(rep->client);
if (rep->server)
krb5_xfree(rep->server);
return retval;
}

Expand Down

0 comments on commit 58c037f

Please sign in to comment.