Check for NULL position and file name. Check for xasprintf failure. Builds on a patch proposed by Frank Rowand: https://www.mail-archive.com/devicetree-compiler@xxxxxxxxxxxxxxx/msg00377.html Annotation extension will introduce the possibility of the position being NULL. Signed-off-by: Julia Lawall <Julia.Lawall@xxxxxxx> --- srcpos.c | 35 +++++++++++++++++++++++------------ 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/srcpos.c b/srcpos.c index 9d38459..7f2626c 100644 --- a/srcpos.c +++ b/srcpos.c @@ -249,24 +249,35 @@ srcpos_copy(struct srcpos *pos) char * srcpos_string(struct srcpos *pos) { - const char *fname = "<no-file>"; + const char *fname; char *pos_str; - - if (pos->file && pos->file->name) + int rc; + + if (!pos) { + rc = asprintf(&pos_str, "%s:<no-line>", fname); + goto out; + } else if (!pos->file) + fname = "<no-file>"; + else if (!pos->file->name) + fname = "<no-filename>"; + else fname = pos->file->name; - if (pos->first_line != pos->last_line) - xasprintf(&pos_str, "%s:%d.%d-%d.%d", fname, - pos->first_line, pos->first_column, - pos->last_line, pos->last_column); + rc = xasprintf(&pos_str, "%s:%d.%d-%d.%d", fname, + pos->first_line, pos->first_column, + pos->last_line, pos->last_column); else if (pos->first_column != pos->last_column) - xasprintf(&pos_str, "%s:%d.%d-%d", fname, - pos->first_line, pos->first_column, - pos->last_column); + rc = xasprintf(&pos_str, "%s:%d.%d-%d", fname, + pos->first_line, pos->first_column, + pos->last_column); else - xasprintf(&pos_str, "%s:%d.%d", fname, - pos->first_line, pos->first_column); + rc = xasprintf(&pos_str, "%s:%d.%d", fname, + pos->first_line, pos->first_column); + +out: + if (rc == -1) + die("Couldn't allocate in srcpos string"); return pos_str; } -- 2.7.4 -- To unsubscribe from this list: send the line "unsubscribe devicetree-compiler" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html