[PATCH 1/5] annotations: Check for NULL pos

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]



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



[Index of Archives]     [Device Tree]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux