Ok, I will

On Mon, 13 Apr 2009 06:56:42 +0800, CAI Qian <[email protected]> wrote:

> From: "Guo Hongruan" <[email protected]>
> Subject: Re: [LTP] patch for mount02.c and mount03.c bugs(maybe)
> Date: Sun, 12 Apr 2009 11:00:48 +0800
>
>> Hi, Qian
>>    The LTP I used is LTP-20090131. Maybe mount03.c has changed since
>>    then. For mount03.c, it does not work on my site.
>>
>> Let's support we execute mount03 using the following command:
>>
>> mount03 -D /dev/hda2 -T ext2
>>
>> look at the following code in mount03.c
>>
>> before applying the patch
>> 172         if (Tflag) {
>>                      /*the space using to store Fstype is strlen("ext2")==4, 
>> the return  
>> value
>>                      of strlen does not include
>>                      the terminating `\0' character */
>> 173                 Fstype = (char *) malloc(strlen(fstype));
>> 174                 if (Fstype == NULL) {
>> 175 tst_brkm(TBROK, NULL, "malloc failed to alloc %d errno "
>> 176                                  " %d ", strlen(fstype), errno);
>> 177                 }
>>                      /*the Fstype context is "ext2", Note that, it is 
>> without the '\0'
>>                      terminating character,
>>                      so when printf("%s", Fstype), the content is 
>> undetermined*/
>> 178                 strncpy(Fstype, fstype, strlen(fstype));
>> 179         } else {
>> 180                 Fstype = (char *) malloc(strlen(DEFAULT_FSTYPE));
>> 181                 if (Fstype == NULL) {
>> 182 tst_brkm(TBROK, NULL, "malloc failed to alloc %d errno "
>> 183                                  " %d ", strlen(fstype), errno);
>> 184                 }
>
> Yes, you are right. Can you also update the above error messages -- line
> 175 and 182 (strlen(fstype) is totally wrong here) to have the correct
> number of bytes?
>
> Thanks,
> CAI Qian
>
>> 185 strncpy(Fstype, DEFAULT_FSTYPE, strlen(DEFAULT_FSTYPE));
>> 186         }
>>
>> after applying the patch.
>> 172         if (Tflag) {
>>                      /*We must allocate enough space to store the whole 
>> string including  
>> '\0'
>>                      terminating character*/
>> 173                 Fstype = (char *) malloc(strlen(fstype)+1);
>> 174                 if (Fstype == NULL) {
>> 175 tst_brkm(TBROK, NULL, "malloc failed to alloc %d errno "
>> 176                                  " %d ", strlen(fstype), errno);
>> 177                 }
>>                      /*memset ensures the terminating character exist for 
>> any cases.*/
>> 178                 memset(Fstype, 0, strlen(fstype)+1);
>> 179                 strncpy(Fstype, fstype, strlen(fstype));
>> 180         } else {
>> 181                 Fstype = (char *) malloc(strlen(DEFAULT_FSTYPE)+1);
>> 182                 if (Fstype == NULL) {
>> 183 tst_brkm(TBROK, NULL, "malloc failed to alloc %d errno "
>> 184                                  " %d ", strlen(fstype), errno);
>> 185                 }
>> 186                 memset(Fstype, 0, strlen(DEFAULT_FSTYPE)+1);
>> 187 strncpy(Fstype, DEFAULT_FSTYPE, strlen(DEFAULT_FSTYPE));
>> 188         }
>>
>>
>> On Sat, 11 Apr 2009 15:55:36 +0800, CAI Qian <[email protected]> wrote:
>>
>>>
>>> Hi,
>>>
>>> --- On Thu, 4/9/09, Guo Hongruan <[email protected]> wrote:
>>>
>>>> From: Guo Hongruan <[email protected]>
>>>> Subject: [LTP] patch for mount02.c and mount03.c bugs(maybe)
>>>> To: [email protected]
>>>> Date: Thursday, April 9, 2009, 11:41 AM
>>>> Hi, Guys,
>>>>     I think I found a bug of mount02.c and
>>>> mount03.c which can not validate 
>>>> mount system call correctly. I did the following change, on
>>>> my sites, it 
>>>> works OK. Here is the patch, hope it is useful.
>>>>
>>>>     Running these testcases manually can
>>>> reproduce this bug:
>>>> mount02 -D /dev/hda2 -T ext2
>>>> mount03 -D /dev/hda2 -T ext2
>>>>
>>>
>>> I can reproduce the problem with mount02, and confirm the patch works.
>>> However, mount03 does not fail for me without the patch.
>>>
>>> # # ./mount03 -D /dev/sdb1 -T ext2
>>> mount03 1 PASS : mount(2) Passed for rwflag MS_RDONLY - mount read-only
>>> mount03 2 PASS : mount(2) Passed for rwflag MS_NODEV - disallow access
>>> to device special files
>>> mount03 3 PASS : mount(2) Passed for rwflag MS_NOEXEC - disallow  
>>> program
>>> execution
>>> mount03 4 PASS : mount(2) Passed for rwflag MS_SYNCHRONOUS - writes are
>>> synced at once
>>> mount03 5 PASS : mount(2) Passed for rwflag MS_REMOUNT - alter flags of
>>> a mounted FS
>>> mount03 6 PASS : mount(2) Passed for rwflag MS_NOSUID - ignore suid and
>>> sgid bits
>>>
>>> Can you describe a little bit about the problem you were facing with
>>> mount03?
>>>
>>> CAI Qian
>>>
>>>> Index: testcases/kernel/syscalls/mount/mount02.c
>>>> ===================================================================
>>>> ---
>>>> testcases/kernel/syscalls/mount/mount02.c   (revision
>>>> 297)
>>>> +++
>>>> testcases/kernel/syscalls/mount/mount02.c   (working
>>>> copy)
>>>> @@ -414,8 +414,8 @@
>>>>              
>>>>    if (Tflag) {
>>>>                
>>>>          /* Avoid buffer
>>>> overflow */
>>>>                
>>>>          strncpy(Type,
>>>> fstype,
>>>> -               
>>>>            
>>>>    (FSTYPE_LEN < strlen(fstype)) ?
>>>> FSTYPE_LEN 
>>>> :
>>>> -               
>>>>                
>>>> strlen(fstype));
>>>> +               
>>>>            
>>>>    (FSTYPE_LEN < strlen(fstype)+1) ? 
>>>>
>>>> FSTYPE_LEN :
>>>> +               
>>>>                
>>>> strlen(fstype)+1);
>>>>              
>>>>    } else {
>>>>                
>>>>          strcpy(Type,
>>>> "ext2");
>>>>              
>>>>    }
>>>>
>>>>
>>>> Index: mount03.c
>>>> ===================================================================
>>>> --- mount03.c    (revision 297)
>>>> +++ mount03.c    (working copy)
>>>> @@ -170,18 +170,20 @@
>>>>       }
>>>>
>>>>       if (Tflag) {
>>>> -        Fstype = (char *)
>>>> malloc(strlen(fstype));
>>>> +        Fstype = (char *)
>>>> malloc(strlen(fstype)+1);
>>>>           if (Fstype ==
>>>> NULL) {
>>>>          
>>>>     tst_brkm(TBROK, NULL, "malloc failed to
>>>> alloc %d errno "
>>>>          
>>>>          " %d ",
>>>> strlen(fstype), errno);
>>>>           }
>>>> +        memset(Fstype, 0,
>>>> strlen(fstype)+1);
>>>>          
>>>> strncpy(Fstype, fstype, strlen(fstype));
>>>>       } else {
>>>> -        Fstype = (char *)
>>>> malloc(strlen(DEFAULT_FSTYPE));
>>>> +        Fstype = (char *)
>>>> malloc(strlen(DEFAULT_FSTYPE)+1);
>>>>           if (Fstype ==
>>>> NULL) {
>>>>          
>>>>     tst_brkm(TBROK, NULL, "malloc failed to
>>>> alloc %d errno "
>>>>          
>>>>          " %d ",
>>>> strlen(fstype), errno);
>>>>           }
>>>> +        memset(Fstype, 0,
>>>> strlen(DEFAULT_FSTYPE)+1);
>>>>          
>>>> strncpy(Fstype, DEFAULT_FSTYPE, strlen(DEFAULT_FSTYPE));
>>>>       }
>>>>
>>>> @@ -408,6 +410,7 @@
>>>>          
>>>>        
>>>>      strerror(TEST_ERRNO));
>>>>          
>>>>         }
>>>>          
>>>>         execve(file, NULL,
>>>> NULL);
>>>> +           
>>>>     exit(-127);
>>>>          
>>>>         /* NOT REACHEAD */
>>>>          
>>>>     } else {
>>>>          
>>>>         waitpid(pid,
>>>> &status, 0);
>>>>
>>>> --
>>>> Guo Hongruan, Embedded Linux Consultant
>>>> Mobile: +86-0-13484056007
>>>> Skype: camelguo
>>>> http://www.gulessoft.com
>>>>
>>>>
>> ------------------------------------------------------------------------------
>>>> This SF.net email is sponsored by:
>>>> High Quality Requirements in a Collaborative Environment.
>>>> Download a free trial of Rational Requirements Composer
>>>> Now!
>>>> http://p.sf.net/sfu/www-ibm-com
>>>> _______________________________________________
>>>> Ltp-list mailing list
>>>> [email protected]
>>>> https://lists.sourceforge.net/lists/listinfo/ltp-list
>>>>
>>
>>
>>
>> --
>> Guo Hongruan, Embedded Linux Consultant
>> Mobile: +86-0-13484056007
>> Skype: camelguo
>> http://www.gulessoft.com



-- 
Guo Hongruan, Embedded Linux Consultant
Mobile: +86-0-13484056007
Skype: camelguo
http://www.gulessoft.com

------------------------------------------------------------------------------
This SF.net email is sponsored by:
High Quality Requirements in a Collaborative Environment.
Download a free trial of Rational Requirements Composer Now!
http://p.sf.net/sfu/www-ibm-com
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list

Reply via email to