<font size=2 face="sans-serif">Hello Bart,</font>
<br>
<br><font size=2 face="sans-serif">Thanks for your attention. I don't think
it is necessary to do that.</font>
<br><font size=2 face="sans-serif">Whatever returning 1 or </font><tt><font size=2>ENOMEM
</font></tt><font size=2 face="sans-serif">it will reply "fail\n"
and set the returning to 1.</font>
<br>
<br><font size=2 face="sans-serif">The executed code in uxsock_trigger
as follows.</font>
<br><tt><font size=2> if (r > 0)
{</font></tt>
<br><tt><font size=2>
if (r == ETIMEDOUT)</font></tt>
<br><tt><font size=2>
*reply = STRDUP("timeout\n");</font></tt>
<br><tt><font size=2>
else</font></tt>
<br><tt><font size=2>
*reply = STRDUP("fail\n");</font></tt>
<br><tt><font size=2>
*len = strlen(*reply) + 1;</font></tt>
<br><tt><font size=2>
r = 1;</font></tt>
<br><tt><font size=2> }</font></tt><font size=2 face="sans-serif">
<br>
</font>
<br>
<br>
<br>
<br><font size=1 color=#5f5f5f face="sans-serif">发件人:
</font><font size=1 face="sans-serif">Bart Van Assche
<bart.vanassche@sandisk.com></font>
<br><font size=1 color=#5f5f5f face="sans-serif">收件人:
</font><font size=1 face="sans-serif"><peng.liang5@zte.com.cn>,
<christophe.varoqui@opensvc.com>, </font>
<br><font size=1 color=#5f5f5f face="sans-serif">抄送:
</font><font size=1 face="sans-serif"><tang.junhui@zte.com.cn>,
<zhang.kai16@zte.com.cn>, <dm-devel@redhat.com></font>
<br><font size=1 color=#5f5f5f face="sans-serif">日期:
</font><font size=1 face="sans-serif">2016/10/12
22:44</font>
<br><font size=1 color=#5f5f5f face="sans-serif">主题:
</font><font size=1 face="sans-serif">Re: [dm-devel]
[PATCH] multipathd: fix issue in 'map $map getprstatus' reply</font>
<br>
<hr noshade>
<br>
<br>
<br><tt><font size=2>On 10/11/16 20:03, peng.liang5@zte.com.cn wrote:<br>
> From: peng liang <peng.liang5@zte.com.cn><br>
> <br>
> -add missing newline to 'map|multipath $map getprstatus' reply<br>
> -use asprintf instead of sprintf<br>
> <br>
> Signed-off-by: peng liang <peng.liang5@zte.com.cn><br>
> ---<br>
> multipathd/cli_handlers.c | 14 ++++++--------<br>
> 1 file changed, 6 insertions(+), 8 deletions(-)<br>
> <br>
> diff --git a/multipathd/cli_handlers.c b/multipathd/cli_handlers.c<br>
> index 8ff4362..16445ea 100644<br>
> --- a/multipathd/cli_handlers.c<br>
> +++ b/multipathd/cli_handlers.c<br>
> @@ -1,6 +1,9 @@<br>
> /*<br>
> * Copyright (c) 2005 Christophe Varoqui<br>
> */<br>
> +#define _GNU_SOURCE<br>
> +<br>
> +#include <stdio.h><br>
> #include "checkers.h"<br>
> #include "memory.h"<br>
> #include "vector.h"<br>
> @@ -1285,14 +1288,9 @@ cli_getprstatus (void * v, char ** reply, int
*<br>
> len, void * data)<br>
> <br>
> condlog(3,
"%s: prflag = %u", param, (unsigned int)mpp->prflag);<br>
> <br>
> - *reply =(char
*)malloc(2);<br>
> - *len = 2;<br>
> - memset(*reply,0,2);<br>
> -<br>
> -<br>
> - sprintf(*reply,"%d",mpp->prflag);<br>
> - (*reply)[1]='\0';<br>
> -<br>
> + *len = asprintf(reply,
"%d\n", mpp->prflag);<br>
> + if (*len
< 0)<br>
> +
return 1;<br>
> <br>
> condlog(3,
"%s: reply = %s", param, *reply);<br>
<br>
Hello Peng,<br>
<br>
Sorry but returning 1 looks somewhat inconsistent to me. This function<br>
is called indirectly by uxsock_trigger() and that function expects that<br>
cli_getprstatus() either returns a positive error code (E...) or a<br>
negative error code. Please change this patch such that ENOMEM is<br>
returned instead of 1 if asprintf() fails.<br>
<br>
Thanks,<br>
<br>
Bart.<br>
<br>
</font></tt>
<br>