Full Text:   <3264>

CLC number: TP314

On-line Access: 2024-08-27

Received: 2023-10-17

Revision Accepted: 2024-05-08

Crosschecked: 0000-00-00

Cited: 0

Clicked: 5903

Citations:  Bibtex RefMan EndNote GB/T7714

-   Go to

Article info.
Open peer comments

Journal of Zhejiang University SCIENCE A 2005 Vol.6 No.1 P.63-70

http://doi.org/10.1631/jzus.2005.A0063


Tools to make C programs safe: a deeper study*


Author(s):  Ji-min Wang1, Ling-di Ping1, Xue-zeng Pan1, Hai-bin Shen2, Xiao-lang Yan2

Affiliation(s):  1. School of Computer Science, Zhejiang University, Hangzhou 310027, China; more

Corresponding email(s):   bigjim@zju.edu.cn

Key Words:  Unsafe feature, C language, Instrumentation tools, Safe dialect


WANG Ji-min, PING Ling-di, PAN Xue-zeng, SHEN Hai-bin, YAN Xiao-lang. Tools to make C programs safe: a deeper study[J]. Journal of Zhejiang University Science A, 2005, 6(1): 63-70.

@article{title="Tools to make C programs safe: a deeper study",
author="WANG Ji-min, PING Ling-di, PAN Xue-zeng, SHEN Hai-bin, YAN Xiao-lang",
journal="Journal of Zhejiang University Science A",
volume="6",
number="1",
pages="63-70",
year="2005",
publisher="Zhejiang University Press & Springer",
doi="10.1631/jzus.2005.A0063"
}

%0 Journal Article
%T Tools to make C programs safe: a deeper study
%A WANG Ji-min
%A PING Ling-di
%A PAN Xue-zeng
%A SHEN Hai-bin
%A YAN Xiao-lang
%J Journal of Zhejiang University SCIENCE A
%V 6
%N 1
%P 63-70
%@ 1673-565X
%D 2005
%I Zhejiang University Press & Springer
%DOI 10.1631/jzus.2005.A0063

TY - JOUR
T1 - Tools to make C programs safe: a deeper study
A1 - WANG Ji-min
A1 - PING Ling-di
A1 - PAN Xue-zeng
A1 - SHEN Hai-bin
A1 - YAN Xiao-lang
J0 - Journal of Zhejiang University Science A
VL - 6
IS - 1
SP - 63
EP - 70
%@ 1673-565X
Y1 - 2005
PB - Zhejiang University Press & Springer
ER -
DOI - 10.1631/jzus.2005.A0063


Abstract: 
The C programming language is expressive and flexible, but not safe; as its expressive power and flexibility are obtained through unsafe language features, and improper use of these features can lead to program bugs whose causes are hard to identify. Since C is widely used, and it is impractical to rewrite all existing C programs in safe languages, so ways must be found to make C programs safe. This paper deals with the unsafe features of C and presents a survey on existing solutions to make C programs safe. We have studied binary-level instrumentation tools, source checkers, source-level instrumentation tools and safe dialects of C, and present a comparison of different solutions, summarized the strengths and weaknesses of different classes of solutions, and show measures that could possibly improve the accuracy or alleviate the overhead of existing solutions.

Darkslateblue:Affiliate; Royal Blue:Author; Turquoise:Article

References

[1] Arnold, M., Ryder, B.G., 2001. A Framework for Reducing the Cost of Instrumented Code. , Proceedings of the Conference on Programming Language Design and Implementation(PLDI), Salt Lake City, 168-179. :168-179. 

[2] Austin, T.M., Breach, S.E., Sohi, G.S., 1994. Efficient Detection of All Pointer and Array Access Errors. , Proceedings of the Conference on Programming Language Design and Implementation (PLDI), 290-301. :290-301. 

[3] Bodik, R., Gupta, R., Sarkar, V., 2000. ABCD: Eliminating Array Bounds Checks on Demand. , SIGPLAN Conference on Programming Language Design and Implementation(PLDI), 321-333. :321-333. 

[4] Bouchareine, P., 2000. Format String Vulnerability. Bugtraq. , (Available from: )http://www.hert.org/papers/format.html,:

[5] Burrows, M., Freund, S.N., Wiener, J.L., 2003. Run-time Type Checking for Binary Programs. , International Conference on Compiler Construction, :

[6] Bush, W.R., Pincus, J.D., Sielaff, D.J., 2000. A static analyzer for finding dynamic programming errors. Software, Practice, and Experience, 30(7):775-802. 

[7] Chandra, S., Reps, T., 1999. Physical Type Checking for C. , Proceedings of the ACM SIGPLAN-SIGSOFT Workshop on Program Analysis for Software Tools and Engineering, volume 24.5 of Software Engineering Notes (SEN), 66-75. :66-75. 

[8] Condit, J., Harren, M., McPeak, S., 2003. CCured in the Real World. , Proceedings of the Conference on Programming Language Design and Implementation, :

[9] David, A., 2003. Flawfinder Documentation. , (Available from: )http://www.dwh-eeler.com/flawfinder/,:

[10] David, W., 2003. Boon Home Page. , (Available from: )http://www.cs.berkeley.edu/~daw/boon/,:

[11] Dor, N., Rodeh, M., Sagiv, M., 2001. Cleanness Checking of String Manipulations in C Programs via Integer Analysis. , 8th International Symposium on Static Analysis (SAS), 194-212. :194-212. 

[12] Evans, D., 1996. Static Detection of Dynamic Memory Errors. , SIGPLAN Conference on Programming Language Design and Implementation, :

[13] Evans, D., 2003. SpLint Documentation. , (Available from: )http://www.splint.org/,:

[14] Grossman, D., Morrisett, G., Jim, T., 2002. Region-based Memory Management in Cyclone. , ACM Conference on Programming Language Design and Implementation, Berlin, Germany, 282-293. :282-293. 

[15] Hasting, R., Joyce, B., 1992. Purify: Fast Detection of Memory Leaks and Access Errors. , Proceedings of the Winter USENIX Conference, :

[16] Jagannathan, S., Wright, A., 1995. Effective Flow Analysis for Avoiding Run-time Checks. , Proceedings of the Second International Static Analysis Symposium, 207-224. :207-224. 

[17] Jim, T., Morrisett, G., Grossman, D., 2002. Cyclone: A Safe Dialect of C. , USENIX Annual Technical Conference, Monterey, CA, 275-288. :275-288. 

[18] Jones, R.W.M., Kelly, P.H.J., 1997. Backwards-Compatible Bounds Checking for Arrays and Pointers in C Programs. , Proceedings of Third International Workshop on Automated Debugging, 13-26. :13-26. 

[19] Larochelle, D., Evans, D., 2001. Statically Detecting likely Buffer Overflow Vulnerabilities. , 10th USENIX Security Symposium. Washington D.C, :

[20] Loginov, A., Yong, S.H., Horwitz, S., 2001. Debugging via Run-time Type Checking. , Proceedings of the Conference on Fundamental Approaches to Software Engineering, 217-232. :217-232. 

[21] Miller, B.P., Koski, D., Lee, C.P., 1995. Fuzz Revisited: A Re-examination of the Reliability of UNIX Utilities and Services. , Technical Report, :

[22] Necula, G.C., McPeak, S., Weimer, W., 2002. CCured: Type-safe Retrofitting of Legacy Code. , Proceedings of the Symposium on Principles of Programming Languages, 128-139. :128-139. 

[23] Necula, G., McPeak, S., Weimer, W., 2003. CCured Documentation. , (Available from: )http://manju.cs.berkely.edu/ccured/,:

[24] Scut, ., 2001. Exploiting Format String Vulnerabilities. , (Available from: )http://teso.scene.at/articles/formatstring/,:

[25] Seward, J., 2003. Valgrind, An Open-source Memory Debugger for x86-GNU/Linux. Technical Report. , (Available from: )http://valgrind.kde.org/,:

[26] Siff, M., Chandra, S., Ball, T., Kunchithapadam, K., Reps, T., 1999. Coping with type casts in C. Lecture Notes in Computer Science, 1687:180-198. 

[27] Smith, G., Volpano, D., 1998. A sound polymorphic type system for a dialect of C. Science of Computer Programming, 32(13):49-72. 

[28] Viega, J., Bloch, J.T., Kohno, Y., 2000. ITS4: A Static Vulnerability Scanner for C and C++ Code. , Proceedings of the Annual Computer Security Applications Conference, :

[29] Wagner, D., Foster, J.S., Brewer, E.A., 2000. A First Step toward Automated Detection of Buffer Overrun Vulnerabilities. , Network Distributed Systems security Symposium, 1-15. :1-15. 


Open peer comments: Debate/Discuss/Question/Opinion

<1>

Please provide your name, email address and a comment





Journal of Zhejiang University-SCIENCE, 38 Zheda Road, Hangzhou 310027, China
Tel: +86-571-87952783; E-mail: cjzhang@zju.edu.cn
Copyright © 2000 - 2024 Journal of Zhejiang University-SCIENCE