Messages in this thread | | | Date | Thu, 29 Jan 2015 13:49:44 -0600 | From | Frank Zago <> | Subject | Re: [HPDD-discuss] [PATCH] staging: lustre: include: lustre_update.h: Fix for possible null pointer dereference |
| |
On 01/29/2015 01:47 PM, Rickard Strandqvist wrote: > 2015-01-29 20:40 GMT+01:00 Frank Zago <fzago@cray.com>: >> On 01/29/2015 12:47 PM, Rickard Strandqvist wrote: >>> >>> Fix a possible null pointer dereference, there is >>> otherwise a risk of a possible null pointer dereference. >>> >>> This was found using a static code analysis program called cppcheck >>> >>> Signed-off-by: Rickard Strandqvist >>> <rickard_strandqvist@spectrumdigital.se> >>> --- >>> drivers/staging/lustre/lustre/include/lustre_update.h | 4 +++- >>> 1 file changed, 3 insertions(+), 1 deletion(-) >>> >>> diff --git a/drivers/staging/lustre/lustre/include/lustre_update.h >>> b/drivers/staging/lustre/lustre/include/lustre_update.h >>> index 84defce..00e1361 100644 >>> --- a/drivers/staging/lustre/lustre/include/lustre_update.h >>> +++ b/drivers/staging/lustre/lustre/include/lustre_update.h >>> @@ -165,12 +165,14 @@ static inline int update_get_reply_buf(struct >>> update_reply *reply, void **buf, >>> int result; >>> >>> ptr = update_get_buf_internal(reply, index, &size); >>> + >>> + LASSERT((ptr != NULL && size >= sizeof(int))); >> >> >> Now size is tested before result. So it could assert if result < 0, while >> the function would have returned before. >> >> >>> + >>> result = *(int *)ptr; >>> >>> if (result < 0) >>> return result; >>> >>> - LASSERT((ptr != NULL && size >= sizeof(int))); >>> *buf = ptr + sizeof(int); >>> return size - sizeof(int); >>> } >>> >> > > > > But if prt is null krachar on the line: > result = *(int *)ptr; > > Maybe there should be two LASSERT then.
Yes, that would be safer.
Frank.
| |