[pacman-dev] [PATCH 4/4] Change strcat function using for strncat

Laszlo Papp djszapi at archlinux.us
Sun Oct 18 14:21:36 EDT 2009


On Sun, Oct 18, 2009 at 12:32 PM, Laszlo Papp <djszapi at archlinux.us> wrote:

>
>
> On Sun, Oct 18, 2009 at 12:03 PM, Xavier <shiningxc at gmail.com> wrote:
>
>> On Sun, Oct 18, 2009 at 6:04 AM, Laszlo Papp <djszapi2 at gmail.com> wrote:
>> >        * Size examined str* function usage is a common coding practice,
>> >        because it's more safer to avoid breakage while using str*
>> functions.
>> >
>> > Signed-off-by: Laszlo Papp <djszapi at archlinux.us>
>> > ---
>> >  lib/libalpm/util.c |    2 +-
>> >  1 files changed, 1 insertions(+), 1 deletions(-)
>> >
>> > diff --git a/lib/libalpm/util.c b/lib/libalpm/util.c
>> > index 553591d..41a5783 100644
>> > --- a/lib/libalpm/util.c
>> > +++ b/lib/libalpm/util.c
>> > @@ -105,7 +105,7 @@ int _alpm_makepath_mode(const char *path, mode_t
>> mode)
>> >                        /* we have another path component- append the
>> newest component to
>> >                         * existing string and create one more level of
>> dir structure */
>> >                        strcat(incr, "/");
>> > -                       strcat(incr, ptr);
>> > +                       strncat(incr, ptr, strlen(ptr));
>> >                        if(access(incr, F_OK)) {
>> >                                if(mkdir(incr, mode)) {
>> >                                        ret = 1;
>>
>> This is useless too.
>> These two are equivalent, so we might as well go for the simpler one.
>>
>>
>
> Xavier, you're right!
>
> But in this mode, it's more safer/better to handle strncat.
>
> sdst = sizeof(dst)-strlen(dst)-1;
>
> ssrc = sizeof(src)
>
> n = (sdst < ssrc ? sdst : ssrc) ; strncat (dst, src , n);
> dst[strlen(dst)+n] = '\0';
>
> Best Regards,
> Laszlo Papp
>

The previous is buggy, but I hope this one can work, opinion ?
sdst = sizeof(dst)-strlen(dst)-1; strncat (dst, src , sdst)

Best Regards,
Laszlo Papp


More information about the pacman-dev mailing list