# V742. Function receives an address of a 'char' type variable instead of pointer to a buffer.

The analyzer detected an error that has to do with passing the address of a variable of type 'char' to a string-handling function, which expects a pointer to a buffer of characters instead. It may lead to runtime errors since functions working with pointers to buffers of characters expect a number of characters and, sometimes, a null terminator at the end of the buffer.

Consider the following example:

    const char a = 'f';
    size_t len = strlen(&a);

In this code, a function that should return the length of a string receives a pointer to variable 'a'. As a result, the whole memory block following the variable's address until a null terminator is found is treated as a string. The outcome of executing this function is undefined; it may return a random value or raise a memory access error.

This bug pattern is very uncommon and usually results from bad code editing or mass replacement of substrings.

To fix the error, one should use a data set corresponding with a buffer of characters or use functions processing single characters.

The fixed version of the code above should look like this:

    const char a[] = "f";
    size_t len = strlen(a);

This diagnostic is classified as:

CWE-170 CERT-EXP37-C

You can look at examples of errors detected by the V742 diagnostic.