llvm / llvm-project

The LLVM Project is a collection of modular and reusable compiler and toolchain technologies.
http://llvm.org
Other
29.37k stars 12.14k forks source link

[libc] Expand usage of LIBC_ADD_NULL_CHECKS. #111546

Open nickdesaulniers opened 1 month ago

nickdesaulniers commented 1 month ago

1896ee38898a73ea9c2894e848884c8999884ab1 added a config option to check for nullptr args to math.h functions. I think we could expand the usage of this macro to additional functions that accept pointer args that are defined by the standard to be non-null (or UB occurs in the case of NULL) (example: memcpy). This would allow us to provide a hardened config.

llvmbot commented 1 month ago

Hi!

This issue may be a good introductory issue for people new to working on LLVM. If you would like to work on this issue, your first steps are:

  1. Check that no other contributor has already been assigned to this issue. If you believe that no one is actually working on it despite an assignment, ping the person. After one week without a response, the assignee may be changed.
  2. In the comments of this issue, request for it to be assigned to you, or just create a pull request after following the steps below. Mention this issue in the description of the pull request.
  3. Fix the issue locally.
  4. Run the test suite locally. Remember that the subdirectories under test/ create fine-grained testing targets, so you can e.g. use make check-clang-ast to only run Clang's AST tests.
  5. Create a Git commit.
  6. Run git clang-format HEAD~1 to format your changes.
  7. Open a pull request to the upstream repository on GitHub. Detailed instructions can be found in GitHub's documentation. Mention this issue in the description of the pull request.

If you have any further questions about this issue, don't hesitate to ask via a comment in the thread below.

llvmbot commented 1 month ago

@llvm/issue-subscribers-good-first-issue

Author: Nick Desaulniers (nickdesaulniers)

1896ee38898a73ea9c2894e848884c8999884ab1 added a config option to check for nullptr args to math.h functions. I think we could expand the usage of this macro to additional functions that accept pointer args that are defined by the standard to be non-null (or UB occurs in the case of NULL) (example: `memcpy`). This would allow us to provide a hardened config.
llvmbot commented 1 month ago

@llvm/issue-subscribers-libc

Author: Nick Desaulniers (nickdesaulniers)

1896ee38898a73ea9c2894e848884c8999884ab1 added a config option to check for nullptr args to math.h functions. I think we could expand the usage of this macro to additional functions that accept pointer args that are defined by the standard to be non-null (or UB occurs in the case of NULL) (example: `memcpy`). This would allow us to provide a hardened config.
AlyElashram commented 1 month ago

I can take a look at this if possible 👍. Can you please assign this to me @nickdesaulniers

nickdesaulniers commented 1 month ago

done!

AlyElashram commented 2 weeks ago

@nickdesaulniers I have a quick question in regards to memcpy and memcmp. The Standard does not define that either of the pointers shouldn't be null and does not specify if there is undefined behavior if either is null.

Should I still add nullchecks to both ? Here's the Standard I'm currently referencing

AlyElashram commented 1 week ago

@michaelrj-google @SchrodingerZhu any ideas on the question above here. Nick seems OOO for the week.