]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
resolved: refuse modifying DnsAnswer objects that have more than one reference
authorLennart Poettering <lennart@poettering.net>
Wed, 9 Dec 2015 16:41:33 +0000 (17:41 +0100)
committerLennart Poettering <lennart@poettering.net>
Thu, 10 Dec 2015 10:28:02 +0000 (11:28 +0100)
DnsAnswer objects should be considered immutable after having passed to
more than one user, i.e. with a reference counter > 1. Enforce that in
code, so that we can track down misuses easier.

src/resolve/resolved-dns-answer.c

index 14cba39ad2a07263f0573c44ef175edae1c19ddd..f1f4d909ccf289530af859fdf8920a6ad2cdc87e 100644 (file)
@@ -81,6 +81,8 @@ int dns_answer_add(DnsAnswer *a, DnsResourceRecord *rr, int ifindex) {
 
         if (!a)
                 return -ENOSPC;
+        if (a->n_ref > 1)
+                return -EBUSY;
 
         for (i = 0; i < a->n_rrs; i++) {
                 if (a->items[i].ifindex != ifindex)