[starnix] Refactor execve arg reading.

This CL adds a method to memory manager to read a C string into a
vector. This is intended to be used for reading strings that can be very
large.

The other alternative, `read_c_string`, required the entire buffer to be
preallocated all at once, and copied all that memory each time.

The `execve` `argv` and `envp` parameters can take up to 32 pages each,
which was not a good fit for `read_c_string`.

There is still some room for improvement to avoid extra copies and
accept uninitialized data, but out of scope for this CL.

Change-Id: If347557e2dcba93969dcccbffef0e5c4d659205a
Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/871261
Reviewed-by: Adam Barth <abarth@google.com>
Commit-Queue: Marco Vanotti <mvanotti@google.com>
2 files changed
tree: 3bc72ab8346f22112af69bf2479e567c4c1c0d0d
  1. boards/
  2. build/
  3. bundles/
  4. docs/
  5. examples/
  6. infra/
  7. products/
  8. scripts/
  9. sdk/
  10. src/
  11. third_party/
  12. tools/
  13. zircon/
  14. .clang-format
  15. .clang-tidy
  16. .editorconfig
  17. .git-blame-ignore-revs
  18. .gitattributes
  19. .gitignore
  20. .gitmodules
  21. .gn
  22. .ignore
  23. .style.yapf
  24. analysis_options.yaml
  25. AUTHORS
  26. BUILD.gn
  27. CODE_OF_CONDUCT.md
  28. CONTRIBUTING.md
  29. fuchsia.code-workspace
  30. LICENSE
  31. OWNERS
  32. PATENTS
  33. pyrightconfig.json
  34. README.md
  35. rustfmt.toml
README.md

Fuchsia

What is Fuchsia?

Fuchsia is an open source, general purpose operating system supporting modern 64-bit Intel and ARM processors.

We expect everyone interacting with our project to respect our code of conduct.

Read more about Fuchsia's principles.

How can I build and run Fuchsia?

See Getting Started.

Where can I learn more about Fuchsia?

See fuchsia.dev.