All of lore.kernel.org
 help / color / mirror / Atom feed
* [LTP] [PATCH] android: madvise08: fix for android devices.
@ 2017-08-28 21:24 Sandeep Patil
  2017-08-29 12:13 ` Cyril Hrubis
  0 siblings, 1 reply; 3+ messages in thread
From: Sandeep Patil @ 2017-08-28 21:24 UTC (permalink / raw)
  To: ltp

The test uses '%m' conversion specifier for vfscanf() that is not
supported in bionic. Use '%s' instead with a buffer that is
substatially larger than the current maximum coredump file name length
of 128 bytes.

Signed-off-by: Sandeep Patil <sspatil@google.com>
---
 testcases/kernel/syscalls/madvise/madvise08.c | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

diff --git a/testcases/kernel/syscalls/madvise/madvise08.c b/testcases/kernel/syscalls/madvise/madvise08.c
index 296c2bff3..813cd687a 100644
--- a/testcases/kernel/syscalls/madvise/madvise08.c
+++ b/testcases/kernel/syscalls/madvise/madvise08.c
@@ -49,10 +49,11 @@
 #define CORE_FILTER "/proc/self/coredump_filter"
 #define YCOUNT 0x500L
 #define FMEMSIZE (YCOUNT + 0x2L)
+#define CORENAME_MAX_SIZE 512
 
 static int dfd;
 static void *fmem;
-static char *cpattern;
+static char cpattern[CORENAME_MAX_SIZE];
 
 static void setup(void)
 {
@@ -80,7 +81,7 @@ static void setup(void)
 	if (!(0x1 & filter))
 		tst_brk(TCONF, "Anonymous private memory is not dumpable.");
 
-	SAFE_FILE_SCANF(CORE_PATTERN, "%m[^\n]", &cpattern);
+	SAFE_FILE_SCANF(CORE_PATTERN, "%s[^\n]", cpattern);
 	tst_res(TINFO, "System core pattern is '%s'", cpattern);
 
 	SAFE_GETCWD(cwd, sizeof(cwd));
@@ -108,10 +109,7 @@ static void setup(void)
 
 static void cleanup(void)
 {
-	if (cpattern)
-		SAFE_FILE_PRINTF(CORE_PATTERN, "%s", cpattern);
-
-	free(cpattern);
+	SAFE_FILE_PRINTF(CORE_PATTERN, "%s", cpattern);
 
 	if (fmem)
 		SAFE_MUNMAP(fmem, FMEMSIZE);
-- 
2.14.1.342.g6490525c54-goog


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* [LTP] [PATCH] android: madvise08: fix for android devices.
  2017-08-28 21:24 [LTP] [PATCH] android: madvise08: fix for android devices Sandeep Patil
@ 2017-08-29 12:13 ` Cyril Hrubis
  2017-09-05 22:20   ` Sandeep Patil
  0 siblings, 1 reply; 3+ messages in thread
From: Cyril Hrubis @ 2017-08-29 12:13 UTC (permalink / raw)
  To: ltp

Hi!
>  static void setup(void)
>  {
> @@ -80,7 +81,7 @@ static void setup(void)
>  	if (!(0x1 & filter))
>  		tst_brk(TCONF, "Anonymous private memory is not dumpable.");
>  
> -	SAFE_FILE_SCANF(CORE_PATTERN, "%m[^\n]", &cpattern);
> +	SAFE_FILE_SCANF(CORE_PATTERN, "%s[^\n]", cpattern);
>  	tst_res(TINFO, "System core pattern is '%s'", cpattern);
>  
>  	SAFE_GETCWD(cwd, sizeof(cwd));
> @@ -108,10 +109,7 @@ static void setup(void)
>  
>  static void cleanup(void)
>  {
> -	if (cpattern)
> -		SAFE_FILE_PRINTF(CORE_PATTERN, "%s", cpattern);
> -
> -	free(cpattern);
> +	SAFE_FILE_PRINTF(CORE_PATTERN, "%s", cpattern);

This change breaks the test in a case that tst_brk() is called before we
read the cpattern successfully, as we will write and empty string to the
cpattern file here in the test cleanup. We have to restore it only and
only if it was read correctly. We may as well add a flag called
restore_pattern and set it to 1 once we write with SAFE_FILE_PRINTF() in
the test setup and use it here.

-- 
Cyril Hrubis
chrubis@suse.cz

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [LTP] [PATCH] android: madvise08: fix for android devices.
  2017-08-29 12:13 ` Cyril Hrubis
@ 2017-09-05 22:20   ` Sandeep Patil
  0 siblings, 0 replies; 3+ messages in thread
From: Sandeep Patil @ 2017-09-05 22:20 UTC (permalink / raw)
  To: ltp

On Tue, Aug 29, 2017 at 02:13:50PM +0200, Cyril Hrubis wrote:
> Hi!
> >  static void setup(void)
> >  {
> > @@ -80,7 +81,7 @@ static void setup(void)
> >  	if (!(0x1 & filter))
> >  		tst_brk(TCONF, "Anonymous private memory is not dumpable.");
> >  
> > -	SAFE_FILE_SCANF(CORE_PATTERN, "%m[^\n]", &cpattern);
> > +	SAFE_FILE_SCANF(CORE_PATTERN, "%s[^\n]", cpattern);
> >  	tst_res(TINFO, "System core pattern is '%s'", cpattern);
> >  
> >  	SAFE_GETCWD(cwd, sizeof(cwd));
> > @@ -108,10 +109,7 @@ static void setup(void)
> >  
> >  static void cleanup(void)
> >  {
> > -	if (cpattern)
> > -		SAFE_FILE_PRINTF(CORE_PATTERN, "%s", cpattern);
> > -
> > -	free(cpattern);
> > +	SAFE_FILE_PRINTF(CORE_PATTERN, "%s", cpattern);
> 
> This change breaks the test in a case that tst_brk() is called before we
> read the cpattern successfully, as we will write and empty string to the
> cpattern file here in the test cleanup. We have to restore it only and
> only if it was read correctly. We may as well add a flag called
> restore_pattern and set it to 1 once we write with SAFE_FILE_PRINTF() in
> the test setup and use it here.

Ack and I did miss that path. Fixing in v2 with a 'restore_cpattern' flag.

- ssp

> 
> -- 
> Cyril Hrubis
> chrubis@suse.cz

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2017-09-05 22:20 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-08-28 21:24 [LTP] [PATCH] android: madvise08: fix for android devices Sandeep Patil
2017-08-29 12:13 ` Cyril Hrubis
2017-09-05 22:20   ` Sandeep Patil

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.