diff options
author | Alan Coopersmith <Alan.Coopersmith@sun.com> | 2006-03-17 03:05:32 +0000 |
---|---|---|
committer | Alan Coopersmith <Alan.Coopersmith@sun.com> | 2006-03-17 03:05:32 +0000 |
commit | c46e8ae80540713ec24fd6d1eea68744937ef158 (patch) | |
tree | 12b6d1dba219dc5d665ec43bcded39661d13e791 /src/sm_manager.c | |
parent | 6842e89f85b1fa30344e2bf3d28e51dbfd978370 (diff) |
Specs say SmsInitialize & SmcOpenConnection return NULL terminated stringsXORG-7_0_99_901
in errorStringRet, but were just calling strncpy and not making sure
strings were NULL terminated if errorLength wasn't long enough.
(Noticed while evaluating Coverity ids 196 & 201.)
Diffstat (limited to 'src/sm_manager.c')
-rw-r--r-- | src/sm_manager.c | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/src/sm_manager.c b/src/sm_manager.c index 68cabcd..df9c221 100644 --- a/src/sm_manager.c +++ b/src/sm_manager.c @@ -1,3 +1,4 @@ +/* $XdotOrg: $ */ /* $Xorg: sm_manager.c,v 1.4 2001/02/09 02:03:30 xorgcvs Exp $ */ /* @@ -130,8 +131,12 @@ char *errorStringRet; if (!newClientProc) { - strncpy (errorStringRet, - "The SmsNewClientProc callback can't be NULL", errorLength); + if (errorStringRet && errorLength > 0) { + strncpy (errorStringRet, + "The SmsNewClientProc callback can't be NULL", + errorLength); + errorStringRet[errorLength - 1] = '\0'; + } return (0); } @@ -150,9 +155,12 @@ char *errorStringRet; NULL /* IceIOErrorProc */ )) < 0) { - strncpy (errorStringRet, - "Could not register XSMP protocol with ICE", errorLength); - + if (errorStringRet && errorLength > 0) { + strncpy (errorStringRet, + "Could not register XSMP protocol with ICE", + errorLength); + errorStringRet[errorLength - 1] = '\0'; + } return (0); } } |