REVIEW 2 major objections 7 minor 1 cited by
Translating C To Rust: Lessons from a User Study
T0 review · 2 major / 7 minor · reviewed 2026-08-12 · deepseek-v4-flash
Pith's one-line read The paper claims that non-expert human programmers can translate real C programs to safe Rust—compiling, CVE-free, near-C-speed—where state-of-the-art automatic tools fail, and explains the translation strategies that make this possible.
desk verdict First user study of C-to-Rust translation, with a genuinely useful strategy catalog; the headline claim about humans vs. tools is only half-validated because the LLM-based tools were never run in their intended mode. read the letter →
The pith
A machine-rendered reading of the paper's core claim, the machinery that carries it, and where it could break.
The reading
What carries the argument
The load-bearing mechanism is the human translation strategy the paper names 'semantic data type lifting': instead of mapping C pointers line-by-line to Rust references, users re-express the underlying object as a higher-level Rust type such as String, Vec<T>, Option<T>, or a grouped struct, and then re-implement C library calls as Rust methods or expressions. Two complementary tactics, reference elision and cloning, resolve the Aliasing Xor Mutability (AXM) rule—Rust's requirement that a piece of data be either mutably borrowed once or immutably borrowed many times—by removing pointers whose work the new type absorbs, or by copying data so that reads and writes target separate objects. This machinery is what lets users achieve temporal memory safety statically, without resorting to runtime reference counting.
What would settle it
Run Flourine or Vert on the same eight benchmarks with an externally supplied decomposition that splits each program into components small enough to translate and then merges the component translations automatically; if the merged output compiles in safe Rust and passes the same tests, the paper's claim that automatic tools cannot do this task is overturned. Similarly, a Laertes or Crown translation of shoco or urlparser that eliminates all raw pointers and unsafe blocks and passes the same fuzz tests would directly refute the claim.
Extended reading notes
Core claim
The core discovery is that the bottleneck in C-to-Rust translation is not memory safety itself but choosing the right high-level Rust data types and restructuring around Rust's ownership and borrowing rules. On eight C programs from the BSD core utilities and two libraries, the study's participants produced safe Rust translations that compile without any 'unsafe' keyword, whereas the compiler-based tools Laertes and Crown left most references as raw pointers and the LLM-based tools Flourine and Vert produced no compilable, safe, whole-program translation. The user translations eliminated the three known CVEs in shoco and urlparser, with temporal safety enforced statically in 95.6% of owning and 99.7% of borrowing references. The closest translation per benchmark usually ran within 20% of the C baseline, and often faster. The same translations, however, differed behaviorally from C on 37% to 100% of fuzz-generated tests, showing that functional equivalence, not safety, is the hard residual problem.
Load-bearing premise
The load-bearing premise is that the four automatic tools were evaluated in a way that gives them a fair chance; in particular, if a decomposition of the benchmark programs into independently translatable and mergeable modules existed that would let Flourine or Vert compile them, the paper's central human-versus-tools comparison would be weakened.
Editorial extensions
If this is right
- If the paper's central claim is right, organizations can expect non-expert programmers to produce safe, compiling Rust ports of small real-world C programs on a timescale of weeks, eliminating known memory-safety CVEs in the process.
- Automatic translators should be redesigned around modeling C data types and library APIs as Rust abstractions, rather than only lifting raw pointers to references while preserving C's control flow.
- LLM-based translators need a workable, mergeable decomposition strategy for whole programs; the paper's decomposition failures identify this as the immediate blocker.
- Zero-cost static temporal safety appears achievable in practice, so the performance case for migrating C to Rust is stronger than the performance case for full-memory-safety instrumentation of C.
- A 'last mile' of functional equivalence remains: safe Rust ports should be shipped with differential fuzzing and an explicit specification of which C behaviors may change.
Reading between the lines
- Inference: The study's benchmarks stop at 536 lines, so a natural extension would be to run the same user-study protocol on C programs of several thousand lines to see whether the elision and cloning strategies scale.
- Inference: The correlated failure patterns across translations of the same C program suggest that some C idioms have a canonical safe-Rust rendering; identifying those idioms could let automatic tools pre-select the right data type.
- Inference: If the decomposition blocker were solved, the paper's user strategies could be encoded as search heuristics for LLM pipelines—for example, generating type-lifting suggestions first and letting a compiler-guided loop apply elision or cloning.
Editorial analysis
A structured set of objections, weighed in public.
Referee Report
Summary. The paper reports a user study in which 33 consenting undergraduate students (of 73 invited) translated eight real-world C programs (322-536 LoC) to safe Rust within 20 days. 31 of the 33 produced compiling, safe-Rust translations; 26 of these passed self-written tests reaching at least 85% line coverage. The authors analyze translation strategies (semantic data-type lifting, elision/cloning for aliasing), the security/performance trade-off (mostly static temporal safety, performance usually within 20% of C), functional gaps (none of the translations is behaviorally equivalent to the C source under differential fuzzing), and the efficacy of four automatic tools (Laertes, Crown, Flourine, Vert). A post-hoc analysis of the uutils/coreutils project is used to test how well the findings generalize.
Significance. The study is carefully designed: IRB exemption, anonymization, post-grade analysis, multiple benchmarks and translators, fuzzing to expose behavioral discrepancies, and a post-hoc check against a mature open-source project. If the findings hold, they provide the first credible evidence that non-expert humans can translate C to memory-safe Rust with acceptable performance, and the identified strategies (semantic data-type lifting, global-to-local refactoring, union-to-enum conversion) are actionable for future automatic translation tools. The principal weakness is that the comparative claim against automatic tools is not fully supported for the LLM-based tools.
major comments (2)
- [Section VII-B] The evaluation of Flourine and Vert does not follow the tools' intended component-wise workflow. The authors fed whole 322-536 LoC programs and then tried manual splits, which produced compilable components that could not be merged back into a single program. They explicitly state: 'We are not aware of better ways to decompose our C programs in components small enough to feed to Flourine or Vert.' This leaves open the possibility that a workable decomposition exists and would allow one or both tools to produce a compiling safe-Rust translation on these benchmarks. Since the abstract's central claim is that 'state-of-the-art automatic tools are not able to do so,' this is a load-bearing gap. The claim should be either restricted to whole-program evaluation or to the compiler-based tools, or the authors should demonstrate the infeasibility of decomposition (e.g., by attempting systematic decomposition strategies and reporting the failures in detail).
- [Abstract and Sections III/VI] The claim that participants 'are able to produce safe Rust translations' is ambiguous. The paper defines safety as 'safe Rust' without the unsafe keyword, but the task requirements also demanded 'equivalent external behavior.' Section VI shows that none of the 31 translations is fully behaviorally equivalent to the C source, with 37%-100% (68% on average) of fuzz tests exhibiting a discrepancy. The abstract should be qualified to distinguish memory safety from functional equivalence, so that readers do not infer that the translations are fully correct substitutes for the C programs.
minor comments (7)
- [Section III (Collected Translations)] The text says participants 'achieved 70% to 98% line coverage' and then 'nearly all of them have coverage above 80%,' but two translations are later reported to have coverage below 80%; please make the wording precise.
- [Section V-A, Table III] The categories 'Nullable' and 'DST' overlap with the earlier 'Owning' and 'Borrowing' rows; a sentence explaining whether these are subcategories or disjoint sets would improve readability.
- [Section VI, Fig. 9] The legend 'all fail 2 fail 1 fail no fail' is ambiguous; it should be phrased as 'all translations fail / two translations fail / one translation fails / no translation fails.'
- [Section VII-B] The sentence '6 out of 8 of our C benchmarks are real-world standalone programs' is correct, but the earlier description of the benchmarks in Section III says 6 from BSDCoreUtils and 2 libraries; aligning the two presentations would avoid confusion.
- [References] References [45] and [46] appear to refer to the same CCured paper; this duplicate should be removed.
- [Section VIII] The phrase '17.6k Github stars' should be '17.6k GitHub stars,' and the commit date is already given but the reference would benefit from a formal citation.
- [Appendix B] The bugfix example uses the unicode-width crate, but the task description in Section III says third-party dependencies are allowed if well-maintained; please note this explicitly in the appendix so readers understand the allowed dependency.
Circularity Check
No circularity found: the paper is an empirical user study whose central claims rest on measured outcomes against independent benchmarks and tools, not on fitted definitions or self-citations.
full rationale
This manuscript does not present a derivation chain; it reports a user study measuring whether human participants can translate C programs to safe Rust and compares those results with four automatic tools. The abstract's central comparative claim -- 'Our participants are able to produce safe Rust translations, whereas state-of-the-art automatic tools are not able to do so' -- is supported by directly observed artifacts: 31 of 33 consenting participants produced compiling safe-Rust translations, 26 passed self-written tests reaching at least 85% coverage, known CVEs were eliminated, and Laertes, Crown, Flourine, and Vert failed to produce safe, compilable translations on the same benchmarks. None of these quantities is defined in terms of another claimed output, and no fitted parameter is later renamed as a prediction. The authors do cite their own prior work in related-work contexts (e.g., references [31], [49], and [59]), but these citations are background context for memory-safety defenses and do not carry the paper's empirical conclusions. The closest concern to circularity is the evaluation of the LLM-based tools Flourine and Vert, which are designed for decomposed inputs but were run whole-program because the authors could not find a workable decomposition; this is a validity threat about fairness of comparison, not a circular step, because the tools' failure is an observed outcome under a stated experimental condition rather than a conclusion pre-encoded in the paper's setup. The paper is also transparent about this limitation in Section VII-B, explicitly stating, 'We are not aware of better ways to decompose our C programs in components small enough to feed to Flourine or Vert.' A threat to external validity or a potentially unfair benchmark condition is not an instance of circular reasoning under the definitions used here. The human-side results are independently grounded: compilation by rustc, line coverage by participant-written tests, differential fuzzing against C behavior, and performance measurement against the original C programs. Therefore, no circularity score above zero is warranted.
Assumptions & free parameters
assumptions (4)
- domain assumption Safe Rust programs, as defined by the Rust type and borrow system, are memory-safe by construction; the RustBelt result [36] is accepted as grounding.
- domain assumption The 33 consenting participants are representative enough of non-expert Rust users for the observed strategies and success rates to generalize.
- domain assumption Line coverage of at least 85% on self-written tests is an adequate proxy for functional correctness of translations.
- domain assumption Differential fuzzing with AFL++ (1 hour per program, up to 300 sampled tests) is sufficient to characterize behavioral equivalence gaps.
Cite this review
Pith. "Pith review of Translating C To Rust: Lessons from a User Study." pith.science (2026). https://pith.science/paper/OUU5MQ6T
@misc{pith2026241114174,
author = {Pith},
title = {Pith review of: Translating C To Rust: Lessons from a User Study},
year = {2026},
howpublished = {\url{https://pith.science/paper/OUU5MQ6T}},
note = {Machine review of arXiv:2411.14174}
}
read the original abstract
Rust aims to offer full memory safety for programs, a guarantee that untamed C programs do not enjoy. How difficult is it to translate existing C code to Rust? To get a complementary view from that of automatic C to Rust translators, we report on a user study asking humans to translate real-world C programs to Rust. Our participants are able to produce safe Rust translations, whereas state-of-the-art automatic tools are not able to do so. Our analysis highlights that the high-level strategy taken by users departs significantly from those of automatic tools we study. We also find that users often choose zero-cost (static) abstractions for temporal safety, which addresses a predominant component of runtime costs in other full memory safety defenses. User-provided translations showcase a rich landscape of specialized strategies to translate the same C program in different ways to safe Rust, which future automatic translators can consider.
Figures
Figures from the paper (15 more)
Forward citations
Cited by 1 Pith paper
-
Syzygy: Dual Code-Test C to (safe) Rust Translation using LLMs and Dynamic Analysis
A dual code-and-test generation pipeline with dynamic-analysis specifications translates the 3,000-line Zopfli C library into safe Rust, though the top-level validation compares compression ratios rather than exact outputs.
Reference graph
Works this paper leans on
-
[1]
“C ++ core guidelines.” [Online]. Available: https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines# i2-avoid-non-const-global-variables
-
[2]
A command-line benchmarking tool
“A command-line benchmarking tool.” [Online]. Available: https: //github.com/sharkdp/hyperfine
-
[3]
Developer echosystem 2023: Rust
“Developer echosystem 2023: Rust.” [Online]. Available: https: //www.jetbrains.com/lp/devecosystem-2023/rust/
work page 2023
-
[4]
“Dynamically sized types.” [Online]. Available: https: //doc.rust-lang. org/reference/dynamically-sized-types.html
-
[5]
Google c ++ style guide: Static and global variables
“Google c ++ style guide: Static and global variables.” [Online]. Available: https: //google.github.io/styleguide/cppguide.html# Static and Global Variables
-
[6]
The heartblead bug (cve-2014-0160)
“The heartblead bug (cve-2014-0160).” [Online]. Available: https: //heartbleed.com/
work page 2014
-
[7]
“Linux kernel coding style.” [Online]. Available: https: //www.kernel. org/doc/html/next/process/coding-style.html
- [8]
Show all 65 references
-
[9]
References and borrowing - the rust programming language
“References and borrowing - the rust programming language.” [Online]. Available: https: //doc.rust-lang.org/book/ ch04-02-references-and-borrowing.html
-
[10]
Thread local storage (rust)
“Thread local storage (rust).” [Online]. Available: https: //doc.rust-lang. org/src/std/thread/local.rs.html#37
-
[11]
Thread local storage (rust standard library)
“Thread local storage (rust standard library).” [Online]. Available: https://doc.rust-lang.org/src/std/thread/local.rs.html
-
[12]
Type punning
“Type punning.” [Online]. Available: https: //en.wikipedia.org/wiki/ Type punning
-
[13]
”the web /local
“”the web /local” boundary is fuzzy: A security study of chrome’s process-based sandboxing,” Proceedings of the 2016 ACM SIGSAC Conference on Computer and Communications Security, 2016. [Online]. Available: https://api.semanticscholar.org/CorpusID:7573477
2016
-
[14]
Arm MTE architecture: Enhancing memory safety,
“Arm MTE architecture: Enhancing memory safety,” 8 2019. [Online]. Available: https://community.arm.com/arm-community-blogs/ b/architectures-and-processors-blog /posts/enhancing-memory-safety
2019
-
[15]
Lost in Translation: A Study of Bugs Introduced by Large Language Models while Translating Code,
“Lost in Translation: A Study of Bugs Introduced by Large Language Models while Translating Code,” Jan. 2024, arXiv:2308.03109 [cs]. [Online]. Available: http://arxiv.org/abs/2308.03109
2024 arXiv
-
[16]
Klee: Unassisted and automatic generation of high-coverage tests for complex systems programs,
C. Cadar, D. Dunbar, and D. R. Engler, “Klee: Unassisted and automatic generation of high-coverage tests for complex systems programs,” in USENIX Symposium on Operating Systems Design and Implementation,
-
[17]
Rad: a compile-time solution to buffer overflow attacks,
T. cker Chiueh and F.-H. Hsu, “Rad: a compile-time solution to buffer overflow attacks,” Proceedings 21st International Conference on Distributed Computing Systems , pp. 409–417, 2001. [Online]. Available: https://api.semanticscholar.org/CorpusID:32026510
2001
-
[18]
Ownership types: A survey,
D. Clarke, J. ¨Ostlund, I. Sergey, and T. Wrigstad, “Ownership types: A survey,” in Aliasing in Object-Oriented Programming , 2013. [Online]. Available: https://api.semanticscholar.org/CorpusID:15940253
2013
-
[19]
Dependent types for low-level programming,
J. Condit, M. Harren, Z. Anderson, D. Gay, and G. C. Necula, “Dependent types for low-level programming,” in Proceedings of the 16th European Symposium on Programming , ser. ESOP’07. Berlin, Heidelberg: Springer-Verlag, 2007, p. 520–535
2007
-
[20]
Stackguard: Automatic adaptive detection and prevention of bu ffer-overflow attacks,
C. Cowan, “Stackguard: Automatic adaptive detection and prevention of bu ffer-overflow attacks,” in USENIX Security Symposium , 1998. [Online]. Available: https://api.semanticscholar.org/CorpusID:2358856
1998
-
[21]
E ffectivesan: type and memory error detection using dynamically typed c /c++,
G. J. Duck and R. H. C. Yap, “E ffectivesan: type and memory error detection using dynamically typed c /c++,” SIGPLAN Not. , vol. 53, no. 4, p. 181–195, Jun. 2018. [Online]. Available: https://doi.org/10.1145/3296979.3192388 14
2018
-
[22]
Checked c: Making c safe by extension,
A. S. Elliott, A. Ruef, M. W. Hicks, and D. Tarditi, “Checked c: Making c safe by extension,” 2018 IEEE Cybersecurity Development (SecDev) , pp. 53–60, 2018. [Online]. Available: https: //api.semanticscholar.org/ CorpusID:53413266
2018
-
[23]
Aliasing limits on translating c to safe rust,
M. Emre, P. Boyland, A. Parekh, R. Schroeder, K. Dewey, and B. Hard- ekopf, “Aliasing limits on translating c to safe rust,” Proceedings of the ACM on Programming Languages, vol. 7, no. OOPSLA1, pp. 551–579, 2023
2023
-
[24]
Translating c to safer rust,
M. Emre, R. Schroeder, K. Dewey, and B. Hardekopf, “Translating c to safer rust,” Proceedings of the ACM on Programming Languages , vol. 5, no. OOPSLA, pp. 1–29, 2021
2021
-
[25]
Towards translating real-world code with llms: A study of translating to rust,
H. F. Eniser, H. Zhang, C. David, M. Wang, B. Paulsen, J. Dodds, and D. Kroening, “Towards translating real-world code with llms: A study of translating to rust,” arXiv preprint arXiv:2405.11514 , 2024
2024 arXiv
-
[26]
Afl ++: combining incremental steps of fuzzing research,
A. Fioraldi, D. Maier, H. Eißfeldt, and M. Heuse, “Afl ++: combining incremental steps of fuzzing research,” in Proceedings of the 14th USENIX Conference on Offensive Technologies, ser. WOOT’20. USA: USENIX Association, 2020
2020
-
[27]
Flow-sensitive type qualifiers,
J. S. Foster, T. Terauchi, and A. Aiken, “Flow-sensitive type qualifiers,” in Proceedings of the ACM SIGPLAN 2002 Conference on Program- ming language design and implementation , 2002, pp. 1–12
2002
-
[28]
Program repair,
X. Gao, Y . Noller, and A. Roychoudhury, “Program repair,” 2022. [Online]. Available: https://arxiv.org/abs/2211.12787
2022 arXiv
-
[29]
Oss-fuzz vulnerabilities github repository,
Google, “Oss-fuzz vulnerabilities github repository,” accessed: July,
-
[30]
Sticky tags: Efficient and deterministic spatial memory error mitigation using persistent memory tags,
F. Gorter, T. Kroes, H. Bos, and C. Giu ffrida, “Sticky tags: Efficient and deterministic spatial memory error mitigation using persistent memory tags,” in 2024 IEEE Symposium on Security and Privacy (SP) . IEEE Computer Society, 2024, pp. 217–217
2024
-
[31]
Data-oriented programming: On the expressiveness of non-control data attacks,
H. Hu, S. Shinde, S. Adrian, Z. L. Chua, P. Saxena, and Z. Liang, “Data-oriented programming: On the expressiveness of non-control data attacks,” in 2016 IEEE Symposium on Security and Privacy (SP). IEEE, 2016, pp. 969–986
2016
-
[32]
Using safety properties to generate vulnerability patches,
Z. Huang, D. Lie, G. Tan, and T. Jaeger, “Using safety properties to generate vulnerability patches,” 2019 IEEE Symposium on Security and Privacy (SP) , pp. 539–554, 2019. [Online]. Available: https://api.semanticscholar.org/CorpusID:106401501
2019
-
[33]
c2rust: Migrate C code to Rust,
Immunant, “c2rust: Migrate C code to Rust,” https: //github.com/ immunant/c2rust, accessed: July 4, 2023
2023
-
[34]
Cyclone: A safe dialect of c,
T. Jim, G. Morrisett, D. Grossman, M. W. Hicks, J. Cheney, and Y . Wang, “Cyclone: A safe dialect of c,” in USENIX Annual Technical Conference, General Track , 2002. [Online]. Available: https://api.semanticscholar.org/CorpusID:5958340
2002
-
[35]
Practical {Data-Only} attack generation,
B. Johannesmeyer, A. Slowinska, H. Bos, and C. Giu ffrida, “Practical {Data-Only} attack generation,” in 33rd USENIX Security Symposium (USENIX Security 24) , 2024, pp. 1401–1418
2024
-
[36]
Rustbelt: Securing the foundations of the rust programming language,
R. Jung, J.-H. Jourdan, R. Krebbers, and D. Dreyer, “Rustbelt: Securing the foundations of the rust programming language,” Proceedings of the ACM on Programming Languages , vol. 2, no. POPL, pp. 1–34, 2017
2017
-
[37]
A hybrid alias analysis and its application to global variable protection in the linux kernel,
G. Li, H. Zhang, J. Zhou, W. Shen, Y . Sui, and Z. Qian, “A hybrid alias analysis and its application to global variable protection in the linux kernel,” in 32nd USENIX Security Symposium (USENIX Security 23), 2023, pp. 4211–4228
2023
-
[38]
A formal model of checked c,
L. Li, Y . Liu, D. Postol, L. Lampropoulos, D. Van Horn, and M. Hicks, “A formal model of checked c,” in 2022 IEEE 35th Computer Security Foundations Symposium (CSF), 2022, pp. 49–63
2022
-
[39]
Pac it up: Towards pointer integrity using arm pointer authentication,
H. Liljestrand, T. Nyman, K. Wang, C. C. Perez, J.-E. Ekberg, and N. Asokan, “Pac it up: Towards pointer integrity using arm pointer authentication,” ArXiv, vol. abs /1811.09189, 2018. [Online]. Available: https://api.semanticscholar.org/CorpusID:53721743
2018 arXiv
-
[40]
C to checked c by 3c,
A. Machiry, J. Kastner, M. McCutchen, A. Eline, K. Headley, and M. W. Hicks, “C to checked c by 3c,” Proceedings of the ACM on Programming Languages, vol. 6, pp. 1 – 29, 2022. [Online]. Available: https://api.semanticscholar.org/CorpusID:247748774
2022
-
[41]
Bsd coreutils is a port of many utilities from bsd to linux and macos,
D. Magdaleno, “Bsd coreutils is a port of many utilities from bsd to linux and macos,” accessed: April, 2024. [Online]. Available: https://github.com/DiegoMagdaleno/BSDCoreUtils
2024
-
[42]
Hybrid concolic testing,
R. Majumdar and K. Sen, “Hybrid concolic testing,” 29th International Conference on Software Engineering (ICSE’07) , pp. 416–426, 2007. [Online]. Available: https://api.semanticscholar.org/CorpusID:6760091
2007
-
[43]
Softbound: highly compatible and complete spatial memory safety for c,
S. Nagarakatte, J. Zhao, M. M. K. Martin, and S. Zdancewic, “Softbound: highly compatible and complete spatial memory safety for c,” in ACM-SIGPLAN Symposium on Programming Language Design and Implementation , 2009. [Online]. Available: https: //api. semanticscholar.org/Corpus...
2009
-
[44]
Cets: compiler enforced temporal safety for c,
——, “Cets: compiler enforced temporal safety for c,” in International Symposium on Mathematical Morphology and Its Application to Signal and Image Processing , 2010. [Online]. Available: https: //api.semanticscholar.org/CorpusID:914358
2010
-
[45]
Ccured: Type-safe retrofitting of legacy software,
G. C. Necula, J. Condit, M. Harren, S. McPeak, and W. Weimer, “Ccured: Type-safe retrofitting of legacy software,” ACM Transactions on Programming Languages and Systems (TOPLAS), vol. 27, no. 3, pp. 477–526, 2005
2005
-
[46]
Ccured: type-safe retrofitting of legacy software,
——, “Ccured: type-safe retrofitting of legacy software,” ACM Trans. Program. Lang. Syst., vol. 27, pp. 477–526, 2005. [Online]. Available: https://api.semanticscholar.org/CorpusID:8303920
2005
-
[47]
libmpk: Software abstraction for intel memory protection keys (intel {MPK}),
S. Park, S. Lee, W. Xu, H. Moon, and T. Kim, “libmpk: Software abstraction for intel memory protection keys (intel {MPK}),” in 2019 USENIX Annual Technical Conference (USENIX ATC 19) , 2019, pp. 241–254
2019
-
[48]
Symbolic execution with symcc: Don’t interpret, compile!
S. Poeplau and A. Francillon, “Symbolic execution with symcc: Don’t interpret, compile!” in USENIX Security Symposium , 2020. [Online]. Available: https://api.semanticscholar.org/CorpusID:221178890
2020
-
[49]
Localizing vulnerabilities statistically from one exploit,
S. Shen, A. Kolluri, Z. Dong, P. Saxena, and A. Roychoudhury, “Localizing vulnerabilities statistically from one exploit,” in Proceedings of the 2021 ACM Asia Conference on Computer and Communications Security , ser. ASIA CCS ’21. New York, NY , USA: Association for Computing ...
2021
-
[50]
Provenfix: Temporal property guided program repair,
Y . SONG, X. GAO, W. LI, W.-N. CHIN, and A. ROYCHOUDHURY , “Provenfix: Temporal property guided program repair,” 2024
2024
-
[51]
Sok: Eternal war in memory,
L. Szekeres, M. Payer, T. Wei, and D. Song, “Sok: Eternal war in memory,” in 2013 IEEE Symposium on Security and Privacy . IEEE, 2013, pp. 48–62
2013
-
[52]
Address space layout randomization
T. P. Team, “Address space layout randomization.” [Online]. Available: https://pax.grsecurity.net/docs/aslr.txt
-
[53]
Enforcing forward-edge control-flow integrity in gcc & llvm,
C. Tice, T. Roeder, P. Collingbourne, S. Checkoway, ´U. Erlingsson, L. Lozano, and G. Pike, “Enforcing forward-edge control-flow integrity in gcc & llvm,” in USENIX Security Symposium , 2014. [Online]. Available: https://api.semanticscholar.org/CorpusID:6034518
2014
-
[54]
Exec shield,
A. van de Ven and I. Molnar, “Exec shield,” 2004
2004
-
[55]
The realities of language conversions,
C. Verhoef and A. Terekhov, “The realities of language conversions,” IEEE Software , vol. 17, no. 6, pp. 111–124, Dec. 2000. [Online]. Available: http://ieeexplore.ieee.org/document/895180/
2000
-
[56]
Cheri: A hybrid capability-system architecture for scalable software compartmentalization,
R. N. M. Watson, J. Woodru ff, P. G. Neumann, S. W. Moore, J. Anderson, D. Chisnall, N. H. Dave, B. Davis, K. Gudka, B. Laurie, S. J. Murdoch, R. M. Norton, M. Roe, S. D. Son, and M. Vadera, “Cheri: A hybrid capability-system architecture for scalable software compartmentaliza...
2015
-
[57]
An e fficient and backwards- compatible transformation to ensure memory safety of c programs,
W. Xu, D. C. DuVarney, and R. Sekar, “An e fficient and backwards- compatible transformation to ensure memory safety of c programs,” in Proceedings of the 12th ACM SIGSOFT twelfth international sympo- sium on Foundations of software engineering , 2004, pp. 117–126
2004
-
[58]
VERT: Verified Equivalent Rust Transpilation with Large Language Models as Few-Shot Learners,
A. Z. H. Yang, Y . Takashima, B. Paulsen, J. Dodds, and D. Kroening, “VERT: Verified Equivalent Rust Transpilation with Large Language Models as Few-Shot Learners,” May 2024. [Online]. Available: http://arxiv.org/abs/2404.18852
2024 arXiv
-
[59]
Capstone: A capability-based foundation for trustless secure memory access (extended version),
J. Yu, C. Watt, A. Badole, T. E. Carlson, and P. Saxena, “Capstone: A capability-based foundation for trustless secure memory access (extended version),” ArXiv, vol. abs /2302.13863, 2023. [Online]. Available: https://api.semanticscholar.org/CorpusID:257220126
2023 arXiv
-
[60]
Ownership guided c to rust translation,
H. Zhang, C. David, Y . Yu, and M. Wang, “Ownership guided c to rust translation,” arXiv preprint arXiv:2303.10515 , 2023
2023 arXiv
-
[61]
Fat pointers for temporal memory safety of c,
J. Zhou, J. Criswell, and M. W. Hicks, “Fat pointers for temporal memory safety of c,” Proceedings of the ACM on Programming Languages, vol. 7, pp. 316 – 347, 2022. [Online]. Available: https://api.semanticscholar.org/CorpusID:251903483 15 Appendix A. Case Studies with Memory ...
2022
-
[64]
#url␣=>\n
Logical Errors that Require More Thorough Testing 16 (a) Code example related to the temporal memory issue 1 // urlparser.c 2 url_data_t *url_parse (char *url) { 3 url_data_t *data = malloc(sizeof(url_data_t)); 4 data->href = url; // Store the pointer 5 } 6 void url_data_inspe...
-
[65]
Center" C Output:
Semantic Di fferences that are Not Easy to Fix Passing Test (Translation A) Executed command: ./fmt -c -w 10 Input: "Center" C Output: " Center" // 2 leading padding spaces Rust Output: " Center" // same as C Failing Test 1 Executed command: ./fmt -c -w 10 Input: "z\u00df\u6c3...
-
[2008]
Available: https: //api.semanticscholar.org/CorpusID: 2520229
[Online]. Available: https: //api.semanticscholar.org/CorpusID: 2520229
-
[2024]
Available: https: //github.com/google/oss-fuzz-vulns
[Online]. Available: https: //github.com/google/oss-fuzz-vulns
Reviewed August 12, 2026 · model on record in the stance chip above.
Discussion (0). Continue with ORCID to comment.