Fix decoding and dumping of readv syscall in case of short read

* defs.h (dumpiov_upto): New prototype.
(dumpiov): Change to a wrapper around dumpiov_upto.
* util.c (dumpiov): Rename to dumpiov_upto, add and check data_size
argument.
* io.c (SYS_FUNC(readv)): Call tprint_iov_upto instead
of tprint_iov and specify syscall return value as a data size limit.
* syscall.c (dumpio): In case of SEN_readv, call dumpiov_upto instead
of dumpiov and specify syscall return value as a data size limit.
* NEWS: Mention this fix.
* tests/readv.c: New file.
* tests/readv.test: New test.
* tests/Makefile.am (check_PROGRAMS): Add readv.
(TESTS): Add readv.test.
* tests/.gitignore: Add readv.
9 files changed
tree: ecb6abe0a689c837018e7d8c59d151ad37a736c0
  1. debian/
  2. linux/
  3. m4/
  4. maint/
  5. qemu_multiarch_testing/
  6. test/
  7. tests/
  8. xlat/
  9. .gitignore
  10. .mailmap
  11. .travis.yml
  12. access.c
  13. affinity.c
  14. aio.c
  15. alpha.c
  16. AUTHORS
  17. bjm.c
  18. block.c
  19. bootstrap
  20. bpf.c
  21. build_static_example.sh
  22. cacheflush.c
  23. capability.c
  24. caps0.h
  25. caps1.h
  26. ChangeLog-CVS
  27. chdir.c
  28. chmod.c
  29. clone.c
  30. configure.ac
  31. COPYING
  32. count.c
  33. CREDITS.in
  34. defs.h
  35. desc.c
  36. dirent.c
  37. dirent64.c
  38. empty.h
  39. epoll.c
  40. errnoent.sh
  41. evdev.c
  42. eventfd.c
  43. execve.c
  44. exit.c
  45. fadvise.c
  46. fallocate.c
  47. fanotify.c
  48. fchownat.c
  49. fcntl.c
  50. fetch_seccomp_fprog.c
  51. fetch_struct_flock.c
  52. file.c
  53. file_handle.c
  54. flock.c
  55. flock.h
  56. futex.c
  57. gcc_compat.h
  58. generate_mpers_am.sh
  59. generate_sen.sh
  60. generate_xlat_in.sh
  61. get_robust_list.c
  62. getcpu.c
  63. getcwd.c
  64. getrandom.c
  65. git-set-file-times
  66. git-version-gen
  67. gitlog-to-changelog
  68. HACKING-scripts
  69. hostname.c
  70. inotify.c
  71. INSTALL
  72. io.c
  73. ioctl.c
  74. ioctlsort.c
  75. ioperm.c
  76. iopl.c
  77. ioprio.c
  78. ipc_defs.h
  79. ipc_msg.c
  80. ipc_msgctl.c
  81. ipc_sem.c
  82. ipc_shm.c
  83. ipc_shmctl.c
  84. kcmp.c
  85. kernel_types.h
  86. kexec.c
  87. keyctl.c
  88. ldt.c
  89. link.c
  90. lookup_dcookie.c
  91. loop.c
  92. lseek.c
  93. make-dist
  94. Makefile.am
  95. mem.c
  96. membarrier.c
  97. memfd_create.c
  98. mknod.c
  99. mount.c
  100. mpers.awk
  101. mpers.sh
  102. mpers_test.sh
  103. mpers_type.h
  104. mq.c
  105. mtd.c
  106. native_defs.h
  107. net.c
  108. NEWS
  109. open.c
  110. or1k_atomic.c
  111. pathtrace.c
  112. perf.c
  113. personality.c
  114. poll.c
  115. prctl.c
  116. print_mq_attr.c
  117. print_msgbuf.c
  118. print_sigevent.c
  119. print_time.c
  120. print_timex.c
  121. printmode.c
  122. printrusage.c
  123. printsiginfo.c
  124. printsiginfo.h
  125. printstat.h
  126. process.c
  127. process_vm.c
  128. ptp.c
  129. ptrace.h
  130. quota.c
  131. readahead.c
  132. readlink.c
  133. README
  134. README-hacking
  135. README-linux-ptrace
  136. README-mpers
  137. reboot.c
  138. regs.h
  139. renameat.c
  140. resource.c
  141. rtc.c
  142. sched.c
  143. scsi.c
  144. seccomp.c
  145. seccomp_fprog.h
  146. sendfile.c
  147. sigaltstack.c
  148. sigevent.h
  149. signal.c
  150. signalent.sh
  151. signalfd.c
  152. sigreturn.c
  153. sock.c
  154. socketutils.c
  155. sram_alloc.c
  156. statfs.c
  157. strace-graph
  158. strace-log-merge
  159. strace.1
  160. strace.c
  161. strace.spec
  162. swapon.c
  163. sync_file_range.c
  164. syscall.c
  165. syscallent.sh
  166. sysctl.c
  167. sysinfo.c
  168. syslog.c
  169. sysmips.c
  170. term.c
  171. time.c
  172. times.c
  173. travis-ci.sh
  174. truncate.c
  175. uid.c
  176. uid16.c
  177. umask.c
  178. umount.c
  179. uname.c
  180. unwind.c
  181. userfaultfd.c
  182. util.c
  183. utime.c
  184. utimes.c
  185. v4l2.c
  186. vsprintf.c
  187. wait.c
  188. xattr.c
  189. xlate.el
  190. xmalloc.c