Skip to content

Commit

Permalink
printstr_ex: handle QUOTE_0_TERMINATED bit consistently
Browse files Browse the repository at this point in the history
When user_style has QUOTE_0_TERMINATED bit set, printstr_ex prints
the fetched string as a NUL-terminated.
After this change, the string is being fetched as a NUL-terminated, too.

* util.c (printstr_ex): Use umovestr instead of umoven
if QUOTE_0_TERMINATED bit is set.
  • Loading branch information
ldv-alt committed Nov 19, 2016
1 parent ead746a commit 03d65a0
Showing 1 changed file with 10 additions and 3 deletions.
13 changes: 10 additions & 3 deletions util.c
Original file line number Diff line number Diff line change
Expand Up @@ -827,8 +827,12 @@ printpath(struct tcb *tcp, long addr)

/*
* Print string specified by address `addr' and length `len'.
* If `len' < 0, treat the string as a NUL-terminated string.
* If string length exceeds `max_strlen', append `...' to the output.
* If `len' == -1, set QUOTE_0_TERMINATED bit in `user_style'.
* If `user_style' has QUOTE_0_TERMINATED bit set, treat the string
* as a NUL-terminated string.
* Pass `user_style' on to `string_quote'.
* Append `...' to the output if either the string length exceeds `max_strlen',
* or `len' != -1 and the string length exceeds `len'.
*/
void
printstr_ex(struct tcb *tcp, long addr, long len, unsigned int user_style)
Expand Down Expand Up @@ -865,7 +869,10 @@ printstr_ex(struct tcb *tcp, long addr, long len, unsigned int user_style)
} else {
if (size > (unsigned long) len)
size = (unsigned long) len;
rc = umoven(tcp, addr, size, str);
if (style & QUOTE_0_TERMINATED)
rc = umovestr(tcp, addr, size, str);
else
rc = umoven(tcp, addr, size, str);
}
if (rc < 0) {
printaddr(addr);
Expand Down

0 comments on commit 03d65a0

Please sign in to comment.