Evaluating the infrastructure of software applications



Journal Title

Journal ISSN

Volume Title


Texas Tech University


In the current environment of heterogeneous distributed computer systems, user applications are more dependent than ever on the infrastructure products. These products include various operating systems, network software, device drivers, and other services needed by the user applications. When user applications request services from the operating system and other system software, it is desirable for the requests to be satisfied in a predictable manner. A user application most frequently interacts with the infrastructure through C and C++ function calls. This research studied the class of functions defined by si X s2 - • si, where si and s2 are null terminated strings, and manipulation is done on the two strings to produce a result that is placed in the original space for si. Through experimentation, it was found that 9 of 25 C and C++ functions tested allowed writing past the allocated space for si. WTiatever variable or data structure happened to be located in the memory following si was overwritten. Since the string arguments were passed by reference, these memory overwrites were undocumented updates to the address space of the calling program. Thus the scope of effect for the fiinction was extended, and the result was unpredictable. A filter has been written to show how memory overwriting can be eliminated for functions in the si X s2 - • si class. The filter truncates the result string before overwriting occurs. A truncated string is still an error, but the error is returned through the defined interface for the function, and is predictable. This type of error does not extend the effect, or scope, of the function. Thus the error can be constrained to a defined subset of the application, and debugging will he much easier. The filter is currently implemented for only two functions. However, in future research, the concept could be used to build a megafilter to handle all functions of the si X s2 -• si class. Eventually other classes of functions could be included, and research could be done toward development of a etafilter to handle more than one class of functions.