{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,2,5]],"date-time":"2026-02-05T11:20:42Z","timestamp":1770290442095,"version":"3.49.0"},"publisher-location":"Cham","reference-count":38,"publisher":"Springer International Publishing","isbn-type":[{"value":"9783030171377","type":"print"},{"value":"9783030171384","type":"electronic"}],"license":[{"start":{"date-parts":[[2019,1,1]],"date-time":"2019-01-01T00:00:00Z","timestamp":1546300800000},"content-version":"tdm","delay-in-days":0,"URL":"http:\/\/www.springer.com\/tdm"}],"content-domain":{"domain":["link.springer.com"],"crossmark-restriction":false},"short-container-title":[],"published-print":{"date-parts":[[2019]]},"DOI":"10.1007\/978-3-030-17138-4_4","type":"book-chapter","created":{"date-parts":[[2019,4,2]],"date-time":"2019-04-02T14:04:43Z","timestamp":1554213883000},"page":"76-98","update-policy":"https:\/\/doi.org\/10.1007\/springer_crossmark_policy","source":"Crossref","is-referenced-by-count":19,"title":["Achieving Safety Incrementally with Checked C"],"prefix":"10.1007","author":[{"given":"Andrew","family":"Ruef","sequence":"first","affiliation":[]},{"given":"Leonidas","family":"Lampropoulos","sequence":"additional","affiliation":[]},{"given":"Ian","family":"Sweet","sequence":"additional","affiliation":[]},{"given":"David","family":"Tarditi","sequence":"additional","affiliation":[]},{"given":"Michael","family":"Hicks","sequence":"additional","affiliation":[]}],"member":"297","published-online":{"date-parts":[[2019,4,3]]},"reference":[{"key":"4_CR1","doi-asserted-by":"crossref","unstructured":"Abadi, M., Budiu, M., Erlingsson, \u00da., Ligatti, J.: Control-flow integrity. In: ACM Conference on Computer and Communications Security (2005)","DOI":"10.1145\/1102120.1102165"},{"key":"4_CR2","unstructured":"Akritidis, P., Costa, M., Castro, M., Hand, S.: Baggy bounds checking: an efficient and backwards-compatible defense against out-of-bounds errors. In: Proceedings of the 18th Conference on USENIX Security Symposium (2009)"},{"key":"4_CR3","doi-asserted-by":"crossref","unstructured":"Austin, T.M., Breach, S.E., Sohi, G.S.: Efficient detection of all pointer and array access errors. In: SIGPLAN Not., vol. 29, no. 6, June 1994","DOI":"10.1145\/773473.178446"},{"key":"4_CR4","unstructured":"Baratloo, A., Singh, N., Tsai, T.: Transparent run-time defense against stack smashing attacks. In: Proceedings of the Annual Conference on USENIX Annual Technical Conference (2000)"},{"key":"4_CR5","unstructured":"Bhatkar, S., DuVarney, D.C., Sekar, R.: Address obfuscation: an efficient approach to combat a broad range of memory error exploits. In: Proceedings of the 12th Conference on USENIX Security Symposium, vol. 12 (2003)"},{"key":"4_CR6","doi-asserted-by":"crossref","unstructured":"Condit, J., Hackett, B., Lahiri, S.K., Qadeer, S.: Unifying type checking and property checking for low-level code. In: POPL 2009: Proceedings of the 36th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages. Association for Computing Machinery, New York (2009)","DOI":"10.1145\/1480881.1480921"},{"key":"4_CR7","doi-asserted-by":"crossref","unstructured":"Condit, J., Harren, M., Anderson, Z., Gay, D., Necula, G.C.: Dependent types for low-level programming. In: Proceedings of European Symposium on Programming (ESOP 2007) (2007)","DOI":"10.1007\/978-3-540-71316-6_35"},{"key":"4_CR8","unstructured":"Cowan, C., et al.: Stackguard: automatic adaptive detection and prevention of buffer-overflow attacks. In: Proceedings of the 7th Conference on USENIX Security Symposium, vol. 7 (1998)"},{"key":"4_CR9","doi-asserted-by":"crossref","unstructured":"Dhurjati, D., Adve, V.: Backwards-compatible array bounds checking for C with very low overhead. In: Proceedings of the 28th International Conference on Software Engineering (2006)","DOI":"10.1145\/1134285.1134309"},{"key":"4_CR10","doi-asserted-by":"crossref","unstructured":"Duck, G.J., Yap, R.H.C.: Heap bounds protection with low fat pointers. In: Proceedings of the 25th International Conference on Compiler Construction (2016)","DOI":"10.1145\/2892208.2892212"},{"key":"4_CR11","doi-asserted-by":"crossref","unstructured":"Elliott, A.S., Ruef, A., Hicks, M., Tarditi, D.: Checked C: Making C safe by extension. In: Proceedings of the IEEE Conference on Secure Development (SecDev), September 2018","DOI":"10.1109\/SecDev.2018.00015"},{"key":"4_CR12","unstructured":"Frantzen, M., Shuey, M.: StackGhost: hardware facilitated stack protection. In: Proceedings of the 10th Conference on USENIX Security Symposium, vol. 10 (2001)"},{"key":"4_CR13","doi-asserted-by":"crossref","unstructured":"Gil, R., Okhravi, H., Shrobe, H.: There\u2019s a hole in the bottom of the C: on the effectiveness of allocation protection. In: Proceedings of the IEEE Conference on Secure Development (SecDev), September 2018","DOI":"10.1109\/SecDev.2018.00021"},{"key":"4_CR14","doi-asserted-by":"crossref","unstructured":"Greenman, B., Felleisen, M.: A spectrum of type soundness and performance. Proc. ACM Program. Lang. 2(ICFP) (2018)","DOI":"10.1145\/3236766"},{"issue":"1","key":"4_CR15","first-page":"112","volume":"23","author":"D Grossman","year":"2005","unstructured":"Grossman, D., Hicks, M., Jim, T., Morrisett, G.: Cyclone: a type-safe dialect of C. C\/C++ Users J. 23(1), 112\u2013139 (2005)","journal-title":"C\/C++ Users J."},{"key":"4_CR16","unstructured":"Jones, R.W.M., Kelly, P.H.J.: Backwards-compatible bounds checking for arrays and pointers in C programs. In: Kamkar, M., Byers, D. (eds.) Third International Workshop on Automated Debugging. Linkoping Electronic Conference Proceedings, Linkoping University Electronic Press, May 1997. \n                    http:\/\/www.ep.liu.se\/ea\/cis\/1997\/009\/"},{"issue":"POPL","key":"4_CR17","doi-asserted-by":"publisher","first-page":"66","DOI":"10.1145\/3158154","volume":"2","author":"R Jung","year":"2017","unstructured":"Jung, R., Jourdan, J.H., Krebbers, R., Dreyer, D.: RustBelt: securing the foundations of the rust programming language. Proc. ACM Program. Lang. 2(POPL), 66 (2017)","journal-title":"Proc. ACM Program. Lang."},{"key":"4_CR18","unstructured":"Kiriansky, V., Bruening, D., Amarasinghe, S.P.: Secure execution via program shepherding. In: Proceedings of the 11th USENIX Security Symposium, pp. 191\u2013206. USENIX Association, Berkeley (2002). \n                    http:\/\/dl.acm.org\/citation.cfm?id=647253.720293"},{"key":"4_CR19","doi-asserted-by":"publisher","unstructured":"Kwon, A., Dhawan, U., Smith, J.M., Knight Jr., T.F., DeHon, A.: Low-fat pointers: compact encoding and efficient gate-level implementation of fat pointers for spatial safety and capability-based security. In: Proceedings of the 2013 ACM SIGSAC Conference on Computer & #38; Communications Security, CCS 2013, pp. 721\u2013732. ACM, New York (2013). \n                    https:\/\/doi.org\/10.1145\/2508859.2516713\n                    \n                  , \n                    http:\/\/doi.acm.org\/10.1145\/2508859.2516713","DOI":"10.1145\/2508859.2516713"},{"key":"4_CR20","doi-asserted-by":"crossref","unstructured":"Matsakis, N.D., Klock II, F.S.: The rust language. In: ACM SIGAda Annual Conference on High Integrity Language Technology (2014)","DOI":"10.1145\/2663171.2663188"},{"key":"4_CR21","doi-asserted-by":"crossref","unstructured":"Matthews, J., Findler, R.B.: Operational semantics for multi-language programs. In: POPL (2007)","DOI":"10.1145\/1190216.1190220"},{"key":"4_CR22","unstructured":"Microsoft Corporation: Control flow guard (2016). \n                    https:\/\/msdn.microsoft.com\/en-us\/library\/windows\/desktop\/mt637065(v=vs.85).aspx\n                    \n                  . Accessed April 27 2016"},{"issue":"3","key":"4_CR23","doi-asserted-by":"publisher","first-page":"348","DOI":"10.1016\/0022-0000(78)90014-4","volume":"17","author":"R Milner","year":"1978","unstructured":"Milner, R.: A theory of type polymorphism in programming. J. Comput. Syst. Sci. 17(3), 348\u2013375 (1978)","journal-title":"J. Comput. Syst. Sci."},{"key":"4_CR24","unstructured":"Intel memory protection extensions (MPX) (2018). \n                    https:\/\/software.intel.com\/en-us\/isa-extensions\/intel-mpx"},{"key":"4_CR25","doi-asserted-by":"crossref","unstructured":"Nagarakatte, S., Zhao, J., Martin, M.M., Zdancewic, S.: SoftBound: highly compatible and complete spatial memory safety for C. In: Proceedings of the 30th ACM SIGPLAN Conference on Programming Language Design and Implementation (2009)","DOI":"10.1145\/1542476.1542504"},{"issue":"3","key":"4_CR26","doi-asserted-by":"publisher","first-page":"477","DOI":"10.1145\/1065887.1065892","volume":"27","author":"GC Necula","year":"2005","unstructured":"Necula, G.C., Condit, J., Harren, M., McPeak, S., Weimer, W.: CCured: type-safe retrofitting of legacy software. ACM Trans. Program. Lang. Syst. (TOPLAS) 27(3), 477\u2013526 (2005)","journal-title":"ACM Trans. Program. Lang. Syst. (TOPLAS)"},{"key":"4_CR27","unstructured":"NIST vulnerability database. \n                    https:\/\/nvd.nist.gov\n                    \n                  . Accessed 17 May 2017"},{"key":"4_CR28","doi-asserted-by":"publisher","DOI":"10.1017\/CBO9780511792588","volume-title":"Advanced Topics in Bisimulation and Coinduction","author":"D Sangiorgi","year":"2011","unstructured":"Sangiorgi, D., Rutten, J.: Advanced Topics in Bisimulation and Coinduction, vol. 52. Cambridge University Press, Cambridge (2011)"},{"key":"4_CR29","unstructured":"Serebryany, K., Bruening, D., Potapenko, A., Vyukov, D.: AddressSanitizer: a fast address sanity checker. In: Proceedings of the 2012 USENIX Conference on Annual Technical Conference (2012)"},{"key":"4_CR30","unstructured":"Siek, J.G., Taha, W.: Gradual typing for functional languages. In: Workshop on Scheme and Functional Programming (2006)"},{"issue":"4","key":"4_CR31","doi-asserted-by":"publisher","first-page":"305","DOI":"10.1002\/spe.4380220403","volume":"22","author":"JL Steffen","year":"1992","unstructured":"Steffen, J.L.: Adding run-time checking to the Portable C Compiler. Softw. Pract. Exper. 22(4), 305\u2013316 (1992)","journal-title":"Softw. Pract. Exper."},{"key":"4_CR32","doi-asserted-by":"crossref","unstructured":"Szekeres, L., Payer, M., Wei, T., Song, D.: SoK: eternal war in memory. In: Proceedings of the 2013 IEEE Symposium on Security and Privacy (2013)","DOI":"10.1109\/SP.2013.13"},{"key":"4_CR33","doi-asserted-by":"crossref","unstructured":"Takikawa, A., Feltey, D., Greenman, B., New, M.S., Vitek, J., Felleisen, M.: Is sound gradual typing dead? In: POPL (2016)","DOI":"10.1145\/2837614.2837630"},{"key":"4_CR34","unstructured":"PaX Team: \n                    http:\/\/pax.grsecurity.net\/docs\/aslr.txt\n                    \n                   (2001)"},{"key":"4_CR35","unstructured":"Tobin-Hochstadt, S., et al.: Migratory typing: ten years later. In: 2nd Summit on Advances in Programming Languages (SNAPL 2017), vol. 71, pp. 17:1\u201317:17 (2017)"},{"key":"4_CR36","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"1","DOI":"10.1007\/978-3-642-00590-9_1","volume-title":"Programming Languages and Systems","author":"P Wadler","year":"2009","unstructured":"Wadler, P., Findler, R.B.: Well-typed programs can\u2019t be blamed. In: Castagna, G. (ed.) ESOP 2009. LNCS, vol. 5502, pp. 1\u201316. Springer, Heidelberg (2009). \n                    https:\/\/doi.org\/10.1007\/978-3-642-00590-9_1"},{"issue":"1","key":"4_CR37","doi-asserted-by":"publisher","first-page":"38","DOI":"10.1006\/inco.1994.1093","volume":"115","author":"AK Wright","year":"1994","unstructured":"Wright, A.K., Felleisen, M.: A syntactic approach to type soundness. Inf. Comput. 115(1), 38\u201394 (1994)","journal-title":"Inf. Comput."},{"key":"4_CR38","unstructured":"Zhou, F., et al.: SafeDrive: safe and recoverable extensions using language-based techniques. In: 7th Symposium on Operating System Design and Implementation (OSDI 2006). USENIX Association, Seattle (2006)"}],"container-title":["Lecture Notes in Computer Science","Principles of Security and Trust"],"original-title":[],"language":"en","link":[{"URL":"http:\/\/link.springer.com\/content\/pdf\/10.1007\/978-3-030-17138-4_4","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2019,5,20]],"date-time":"2019-05-20T09:16:53Z","timestamp":1558343813000},"score":1,"resource":{"primary":{"URL":"http:\/\/link.springer.com\/10.1007\/978-3-030-17138-4_4"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2019]]},"ISBN":["9783030171377","9783030171384"],"references-count":38,"URL":"https:\/\/doi.org\/10.1007\/978-3-030-17138-4_4","relation":{},"ISSN":["0302-9743","1611-3349"],"issn-type":[{"value":"0302-9743","type":"print"},{"value":"1611-3349","type":"electronic"}],"subject":[],"published":{"date-parts":[[2019]]},"assertion":[{"value":"3 April 2019","order":1,"name":"first_online","label":"First Online","group":{"name":"ChapterHistory","label":"Chapter History"}},{"value":"POST","order":1,"name":"conference_acronym","label":"Conference Acronym","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"International Conference on Principles of Security and Trust","order":2,"name":"conference_name","label":"Conference Name","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"Prague","order":3,"name":"conference_city","label":"Conference City","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"Czech Republic","order":4,"name":"conference_country","label":"Conference Country","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"2019","order":5,"name":"conference_year","label":"Conference Year","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"11 April 2019","order":7,"name":"conference_start_date","label":"Conference Start Date","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"11 April 2019","order":8,"name":"conference_end_date","label":"Conference End Date","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"8","order":9,"name":"conference_number","label":"Conference Number","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"post2019","order":10,"name":"conference_id","label":"Conference ID","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"https:\/\/www.etaps.org\/2019\/post","order":11,"name":"conference_url","label":"Conference URL","group":{"name":"ConferenceInfo","label":"Conference Information"}}]}}