diff options
author | Ken Raeburn <raeburn@mit.edu> | 2007-06-26 22:50:36 +0000 |
---|---|---|
committer | Ken Raeburn <raeburn@mit.edu> | 2007-06-26 22:50:36 +0000 |
commit | f4cb46135ebba2207ed299980da0bf4c45223e11 (patch) | |
tree | 6fd1c67829f7e4bd4d384738de191530ac7c5894 /src/appl/bsd | |
parent | 1b52a1fd30640202d3b4eee7c537c1bbb5d84e9e (diff) | |
download | krb5-f4cb46135ebba2207ed299980da0bf4c45223e11.tar.gz krb5-f4cb46135ebba2207ed299980da0bf4c45223e11.tar.xz krb5-f4cb46135ebba2207ed299980da0bf4c45223e11.zip |
Check malloc return for null in kstream_create_* instead of
unconditionally dereferencing. Thanks to Domagoj Babic for finding
the bug.
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@19640 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/appl/bsd')
-rw-r--r-- | src/appl/bsd/v4rcp.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/appl/bsd/v4rcp.c b/src/appl/bsd/v4rcp.c index 13b46233a4..44938dbd63 100644 --- a/src/appl/bsd/v4rcp.c +++ b/src/appl/bsd/v4rcp.c @@ -122,6 +122,8 @@ static kstream kstream_create_rcp_from_fd(read_fd, write_fd, sched, ivec) des_cblock *ivec; { kstream tmp = (kstream)malloc(sizeof(*tmp)); + if (tmp == NULL) + return NULL; tmp->encrypting = 1; tmp->read_fd = read_fd; tmp->write_fd = write_fd; @@ -145,6 +147,8 @@ static kstream kstream_create_from_fd(read_fd, write_fd, sched, session) { /* just set it up... */ kstream tmp = (kstream)malloc(sizeof(*tmp)); + if (tmp == NULL) + return NULL; tmp->encrypting = 0; tmp->read_fd = read_fd; tmp->write_fd = write_fd; @@ -429,6 +433,10 @@ int main(argc, argv) &crypt_session_key); } else krem = kstream_create_from_fd (rem, 0, 0); + if (krem == NULL) { + error("rcp: out of memory\n"); + exit(1); + } kstream_set_buffer_mode (krem, 0); #endif /* KERBEROS && !NOENCRYPTION */ (void) response(); @@ -449,6 +457,10 @@ int main(argc, argv) &crypt_session_key); } else krem = kstream_create_from_fd (rem, 0, 0); + if (krem == NULL) { + error("rcp: out of memory\n"); + exit(1); + } kstream_set_buffer_mode (krem, 0); #endif /* KERBEROS && !NOENCRYPTION */ if (setuid(userid)) { |