fix null pointer dereference
PATCH 1/1 fix null pointer dereference
From: =?UTF-8?q?Kleber=20Tarc=C3=ADsio?= <[email protected]>
The malloc function can return null when the memory allocation fails. This commit adds a condition to handle these cases properly. https://cwe.mitre.org/data/definitions/476.html
---
Avoiding null pointer dereference
This pull request aims to fix null pointer dereference.
Null pointer dereference
[https://cwe.mitre.org/data/definitions/476.html]
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-983%2Fklebertarcisio%2Fpatch-1-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-983/klebertarcisio/patch-1-v1
Pull-Request: https://github.com/git/git/pull/983
builtin/submodule--helper.c | 2 ++ 1 file changed, 2 insertions(+)
builtin/submodule--helper.c +2 -0
@@ -1215,6 +1215,8 @@ static void submodule_summary_callback(struct diff_queue_struct *q,if (!S_ISGITLINK (p->one->mode) && !S_ISGITLINK (p->two->mode))continue ; temp = (struct module_cb *)malloc (sizeof (struct module_cb )); +if (!temp) +die (_ ("out of memory" )); temp->mod_src = p->one->mode; temp->mod_dst = p->two->mode; temp->oid_src = p->one->oid;
base-commit: a5828ae6b52137b913b978e16cd2334482eb4c1f
Signature · 1 line
gitgitgadget
Quoted 13 lines · Kleber Tarcísio via GitGitGadget
From: =?UTF-8?q?Kleber=20Tarc=C3=ADsio?= <[email protected]>
The malloc function can return null when the memory allocation fails. This commit adds a condition to handle these cases properly. https://cwe.mitre.org/data/definitions/476.html
Signed-off-by Kleber Tarcísio <[email protected]>---
Avoiding null pointer dereferenceThis pull request aims to fix null pointer dereference.
Null pointer dereference
[https://cwe.mitre.org/data/definitions/476.html]
Quoted 6 lines
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-983%2Fklebertarcisio%2Fpatch-1-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-983/klebertarcisio/patch-1-v1
Pull-Request: https://github.com/git/git/pull/983builtin/submodule--helper.c | 2 ++ 1 file changed, 2 insertions(+)
Thanks, from my brief grepping of the remaining code in git.git there is no other malloc() that doesn't have its return value checked appropriately.
builtin/submodule--helper.c static void submodule_summary_callback(struct diff_queue_struct *q, · line 1222
Quoted 13 lines
builtin/submodule--helper.c +2
-0@@ -1215,6 +1215,8 @@ static void submodule_summary_callback(struct diff_queue_struct *q,if (!S_ISGITLINK (p->one->mode) && !S_ISGITLINK (p->two->mode))continue ; temp = (struct module_cb *)malloc (sizeof (struct module_cb )); +if (!temp) +die (_ ("out of memory" )); temp->mod_src = p->one->mode; temp->mod_dst = p->two->mode; temp->oid_src = p->one->oid;
When we just want to die if we can't allocate memory we should use the xmalloc() wrapper instead.
Hi, Kleber. And welcome to the list!
Quoted 4 lines · Kleber Tarcísio via GitGitGadget
From: =?UTF-8?q?Kleber=20Tarc=C3=ADsio?= <[email protected]>
The malloc function can return null when the memory allocation fails. This commit adds a condition to handle these cases properly. https://cwe.mitre.org/data/definitions/476.html
If you are going to re-roll this series, please wrap the commit message body at 72 columns. This helps viewing the message in 80-columns terminals. (For more info on this and other commit message conventions used by the Git project, please take a look at the corresponding sections at Documentation/MyFirstContribution.txt and Documentation/SubmittingPatches).
Thanks,
Matheus
Quoted 2 lines · Kleber Tarcísio via GitGitGadget
From: =?UTF-8?q?Kleber=20Tarc=C3=ADsio?= <[email protected]>
Subject: Re: [PATCH] fix null pointer dereference
Thanks, but see Documentation/SubmittingPatches for general guidelines. Our commit title begins with "<area>:" so that when this change is buried among hundreds of other commits in "git shortlog --no-merges", the readers can tell what it is about.
Subject: [PATCH] submodule-helper: avoid unchecked malloc()
perhaps.
Quoted 1 line
The malloc function can return null when the memory allocation fails. This commit adds a condition to handle these cases properly. https://cwe.mitre.org/data/definitions/476.html
Overlong line. Also when you can say something without forcing readers to refer to external material, do so (and if you do not think you can, try harder ;-).
In this case, I think you do not need to say
anything more than
submodule-helper.c::submodule_summary_callback() calls malloc() and uses the returned value without checking for NULLness. Use xmalloc() instaed.
builtin/submodule--helper.c static void submodule_summary_callback(struct diff_queue_struct *q, · line 1219
Quoted 10 lines
builtin/submodule--helper.c +2
-0@@ -1215,6 +1215,8 @@ static void submodule_summary_callback(struct diff_queue_struct *q,if (!S_ISGITLINK (p->one->mode) && !S_ISGITLINK (p->two->mode))continue ; temp = (struct module_cb *)malloc (sizeof (struct module_cb )); +if (!temp) +die (_ ("out of memory" ));
And this should be just
- temp = (struct module_cb*)malloc(sizeof(struct module_cb));
+ temp = (struct module_cb*)xmalloc(sizeof(struct module_cb));
without any "check and die" on its own.
Note that if this were a new code that adds a call to xmalloc(), competent reviewers would say it should be spelled more like so:
temp = xmalloc(sizeof(*temp));
to lose unnecessary cast and to prepare for future evolution of the code (e.g. the type of 'temp' may change from 'struct module_cb' to somethng else). But for this "malloc is wrong, use xmalloc instead" fix, we do not mix such a code improvement in the same patch.
Thanks.