These fixes are to mitigate the issue(s) reported by Coverity and Peter
Maydell.

In v4:
- Dropped "add directory semihosting operations": needs a better design
approach, perhaps w/some architecture-independent state.  Not required to
mitigate Coverity issues.
- Pulled the hexagon_read*()->get_user() out of "fix semihosting OPEN filename
handling" into its own patch.

In v3:
- The first patch now uses get_user_*() for semihosting argument accesses,
instead of hexagon_read_memory(), now removed.
- For HEX_SYS_OPEN, filename/len validation errors are handled together.

In v2:
- HEX_SYS_OPEN switched to lock_user() from lock_user_string()
- pulled in {open,read,close}dir from the a prev patch, changes since that v2:
  * Replaces POSIX DIR, opendir(), readdir(), and closedir() with portable GLib 
GDir APIs.
  {un,}lock_user
  * Replaces the fixed BUFSIZ path buffer and byte-by-byte guest reads with 
lock_user_string()/unlock_user().
  * Adds SemihostingDir, which stores the GDir plus enumeration state
  * Synthesizes . and .., omitted by glib
  * Writes inode zero instead of host d_ino, which GLib does not expose 
portably.
  * Limits returned names to 254 characters plus NUL, rather than depending on 
host struct dirent::d_name size.
  Prev opendir v2: 
https://lore.kernel.org/qemu-devel/[email protected]/

v2: 
https://lore.kernel.org/qemu-devel/[email protected]/
v1: 
https://lore.kernel.org/qemu-devel/[email protected]/

Brian Cain (4):
  target/hexagon: use get_user*() for semihosting arguments
  target/hexagon: fix semihosting OPEN filename handling
  target/hexagon: fix semihosting STAT filename handling
  target/hexagon: fix semihosting ACCESS filename handling

 target/hexagon/cpu_helper.h |   2 -
 target/hexagon/cpu_helper.c |  48 ++-----------
 target/hexagon/hexswi.c     | 134 +++++++++++++++++++++---------------
 3 files changed, 82 insertions(+), 102 deletions(-)

-- 
2.34.1

Reply via email to