2021-06-30 08:28:09

by wuguanghao

[permalink] [raw]
Subject: [PATCH v2 11/12] misc/lsattr: check whether path is NULL in lsattr_dir_proc()

From: Zhiqiang Liu <[email protected]>

In lsattr_dir_proc(), if malloc() return NULL, it will cause
a segmentation fault problem.

Signed-off-by: Zhiqiang Liu <[email protected]>
Signed-off-by: Wu Guanghao <[email protected]>
---
misc/lsattr.c | 6 ++++++
1 file changed, 6 insertions(+)

diff --git a/misc/lsattr.c b/misc/lsattr.c
index 0d954376..f3212069 100644
--- a/misc/lsattr.c
+++ b/misc/lsattr.c
@@ -144,6 +144,12 @@ static int lsattr_dir_proc (const char * dir_name, struct dirent * de,
int dir_len = strlen(dir_name);

path = malloc(dir_len + strlen (de->d_name) + 2);
+ if (!path) {
+ fprintf(stderr, "%s",
+ _("Couldn't allocate path variable "
+ "in lsattr_dir_proc"));
+ return -1;
+ }

if (dir_len && dir_name[dir_len-1] == '/')
sprintf (path, "%s%s", dir_name, de->d_name);
--
2.19.1


2021-07-16 04:00:05

by Theodore Ts'o

[permalink] [raw]
Subject: Re: [PATCH v2 11/12] misc/lsattr: check whether path is NULL in lsattr_dir_proc()

On Wed, Jun 30, 2021 at 04:27:23PM +0800, wuguanghao wrote:
>
> diff --git a/misc/lsattr.c b/misc/lsattr.c
> index 0d954376..f3212069 100644
> --- a/misc/lsattr.c
> +++ b/misc/lsattr.c
> @@ -144,6 +144,12 @@ static int lsattr_dir_proc (const char * dir_name, struct dirent * de,
> int dir_len = strlen(dir_name);
>
> path = malloc(dir_len + strlen (de->d_name) + 2);
> + if (!path) {
> + fprintf(stderr, "%s",
> + _("Couldn't allocate path variable "
> + "in lsattr_dir_proc"));
> + return -1;
> + }

The string is missing a closing newline. Also, why not?

fputs(_("Couldn't allocate path variable in lsattr_dir_proc"),
stderr);

- Ted

2021-07-17 01:40:57

by Zhiqiang Liu

[permalink] [raw]
Subject: Re: [PATCH v2 11/12] misc/lsattr: check whether path is NULL in lsattr_dir_proc()


On 2021/7/16 11:58, Theodore Y. Ts'o wrote:
> On Wed, Jun 30, 2021 at 04:27:23PM +0800, wuguanghao wrote:
>> diff --git a/misc/lsattr.c b/misc/lsattr.c
>> index 0d954376..f3212069 100644
>> --- a/misc/lsattr.c
>> +++ b/misc/lsattr.c
>> @@ -144,6 +144,12 @@ static int lsattr_dir_proc (const char * dir_name, struct dirent * de,
>> int dir_len = strlen(dir_name);
>>
>> path = malloc(dir_len + strlen (de->d_name) + 2);
>> + if (!path) {
>> + fprintf(stderr, "%s",
>> + _("Couldn't allocate path variable "
>> + "in lsattr_dir_proc"));
>> + return -1;
>> + }
> The string is missing a closing newline. Also, why not?
>
> fputs(_("Couldn't allocate path variable in lsattr_dir_proc"),
> stderr);
>
> - Ted
>
> .

Thanks for your suggestion.

We will resend the v3 patch as your suggestion.