Comments (3)
Two things we need to think about, as brought up in the meeting today:
- Array to Pointer Decays: What kind of pointers do arrays become? This probably changes when we consider local arrays vs global arrays vs parameter arrays (which "decay" in the declaration to array_ptrs)
- Function Pointers: I assume named functions become non-null ptrs to functions, and nullary ptrs to functions get a dynamic check before every call.
from checkedc.
There was additional feedback from the meeting that it would be useful to understand where nullable pointers would be useful. The conjecture was that nullable pointers would be used a lot in data structures, but not used that much for local variables. A suggestion was that it would be useful to take some real-world code (such as OpenSSL) and mock up part of it with the proposed changes.
I think one reason why nullable pointers might be used in data structures is that requiring that members have non-nullable pointers means that we need to check that members are initialized properly to non-null before they are used. This would mean expanding the treatment of initialization of data structures in the Checked C specification - zeroing allocated data would not be sufficient. For objects, we would have to make sure that an object with a non-null ponter does not escape before it is initialized. We would probably also need a flow-sensitive treatement of initialization of variables and data structures.
from checkedc.
After thinking about this, we decided that this would be a substantial language change that would require some effort to implement in the Checked C version of clang. We think it is more useful to get a working compiler with runtime checking first before making this language change, that is, implement the version 0.6 spec before making substantial changes to the language extension in this area.
from checkedc.
Related Issues (20)
- semantics of realloc HOT 3
- [off-topic] Checked C's objectives vis-a-vis Verona?
- Problems caused by `__SOCKADDR_ARG` transparent union in `sys/socket.h` when `_GNU_SOURCE` is on
- When CheckedC Will Be Available For WDK and Driver Dev
- Possibility of using stack variables for nt_array bounds widening
- Wiki Example of _Nt_array_ptr Bounds Widening Does Not Work HOT 1
- Linking problems with out-of-line definitions for `checkedc_extensions.h` HOT 2
- `snprintf` bounds-safe interface is unhelpful for variable-length null-terminated buffers HOT 11
- Checked C mailing list archive web site is down HOT 4
- How can checked headers add itypes to struct already defined in original system headers? HOT 1
- Activate a checked declaration conditional on the existence of the original system declaration? HOT 1
- `bsearch` bounds-safe interface does not enforce that `size == sizeof(T)` (unsound)
- Restrict `malloc` of uninitialized memory containing checked pointers?
- `redeclare_libs_{explicit,implicit}.c` tests fail when `_CHECKEDC_MOCKUP_THREADS` is removed on a system that supports threads
- Issue to track comments and updates to the proposed Checked C extension changes. HOT 3
- function without a prototype cannot be used or declared in a checked scope
- Casts should be excluded from checked region? HOT 2
- This repo is missing important files
- How to use MSYS2/Mingw-w64 GCC compiler instead of Microsoft Visual Studio?
- forwarding pointer for Checked C? HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from checkedc.