Guo, On Mon, 2009-04-13 at 10:57 +0800, Guo Hongruan wrote: > Ok, I will
I am hoping that you will resend a complete set for both mount02.c and mount03.c with Caiś comments. Post Caiś acknowledgement, i will checkin. Regards-- Subrata > > 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 > > > ------------------------------------------------------------------------------ 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
