<html><head><style type="text/css"><!-- DIV {margin:0px;} --></style></head><body><div style="font-family:times new roman,new york,times,serif;font-size:12pt"><div style="font-family: times new roman,new york,times,serif; font-size: 12pt;"><div><br>I am a new splint user and am having some difficutly with the annotations. I read the documentation and looked at the examples and still have some trouble. Can someone please help me get started?<br><br>I have the source code line:<br>const char *subCmds[] = { "-file", "-stream", NULL }; <br><br>This array needs to have the last element be NULL so when used a parameter in a method, the method knows when to stop reading the array. Splint produces the following errors.<br><br>test.c:94:68: Index of possibly null pointer subCmds: subCmds<br>&nbsp; A possibly null pointer is dereferenced.&nbsp; Value is either the result of a<br>&nbsp; function which may return null (in which case, code should check it is
 not<br>&nbsp; null), or a global, parameter or structure field declared with the
 null<br>&nbsp; qualifier. (Use -nullderef to inhibit warning)<br>&nbsp;&nbsp; test.c:94:27: Storage subCmds may become null<br>test.c:94:61: Local subCmds[2] initialized to null value: subCmds[2] = NULL<br>&nbsp; A reference with no null annotation is assigned or initialized to NULL.&nbsp; Use<br>&nbsp; /*@null@*/ to declare the reference as a possibly null pointer. (Use<br>&nbsp; -nullassign to inhibit warning)<br><br>After reading the warnings I tried changing the source line in the following ways, none of which worked for me.<br><br>/*@-nullderef@*/ const char *subCmds[] = { "-file", "-stream", NULL };&nbsp; /*@=nullderef@*/ <br>
/*@-nullassign@*/ const char *subCmds[] = { "-file", "-stream", NULL };&nbsp; /*@=nullassign@*/<br>
const char *subCmds[] = { "-file", "-stream", /*@null@*/&nbsp; NULL }; <br><br>The second problem I encountered is that splint wants me to annotate the header files of exeternal packages I call to indicate out parameters and parameters that can be NULL. Since I don't own that source code,I really don't want to change it. How do I indicate to splint where I invoked the method that my parameters are correct and the method is used correctly.<br><br>The third issue is that I am creating a shared library that&nbsp; implements the interface. At no place in my code base will I call these public interface methods. How can I tell splint that these methods are exported and not called directly, but that is okay.<br><span style="font-weight: bold;"></span><br>Can someone tell me what I am doing wrong? Once I understand these three problems, I should be able to fix the rest of my module.<br><br>Marcus<br>
<br></div></div></div><br>

      </body></html>