dns-domain: change error codes when dealing with too short buffers to ENOBUFS
authorLennart Poettering <lennart@poettering.net>
Mon, 30 Nov 2015 18:40:20 +0000 (19:40 +0100)
committerLennart Poettering <lennart@poettering.net>
Mon, 30 Nov 2015 18:42:35 +0000 (19:42 +0100)
Some calls used ENOBUFS to indicate too-short result buffers, others
used ENOSPC. Let's unify this on ENOBUFS.

src/shared/dns-domain.c
src/test/test-dns-domain.c

index 03c0107..5ac8ad5 100644 (file)
@@ -53,12 +53,12 @@ int dns_label_unescape(const char **name, char *dest, size_t sz) {
                 if (*n == 0)
                         break;
 
-                if (sz <= 0)
-                        return -ENOSPC;
-
                 if (r >= DNS_LABEL_MAX)
                         return -EINVAL;
 
+                if (sz <= 0)
+                        return -ENOBUFS;
+
                 if (*n == '\\') {
                         /* Escaped character */
 
@@ -192,7 +192,7 @@ int dns_label_escape(const char *p, size_t l, char *dest, size_t sz) {
         if (l <= 0 || l > DNS_LABEL_MAX)
                 return -EINVAL;
         if (sz < 1)
-                return -ENOSPC;
+                return -ENOBUFS;
 
         assert(p);
         assert(dest);
@@ -205,7 +205,7 @@ int dns_label_escape(const char *p, size_t l, char *dest, size_t sz) {
                         /* Dot or backslash */
 
                         if (sz < 3)
-                                return -ENOSPC;
+                                return -ENOBUFS;
 
                         *(q++) = '\\';
                         *(q++) = *p;
@@ -221,7 +221,7 @@ int dns_label_escape(const char *p, size_t l, char *dest, size_t sz) {
                         /* Proper character */
 
                         if (sz < 2)
-                                return -ENOSPC;
+                                return -ENOBUFS;
 
                         *(q++) = *p;
                         sz -= 1;
@@ -231,7 +231,7 @@ int dns_label_escape(const char *p, size_t l, char *dest, size_t sz) {
                         /* Everything else */
 
                         if (sz < 5)
-                                return -ENOSPC;
+                                return -ENOBUFS;
 
                         *(q++) = '\\';
                         *(q++) = '0' + (char) ((uint8_t) *p / 100);
@@ -315,7 +315,7 @@ int dns_label_apply_idna(const char *encoded, size_t encoded_size, char *decoded
         if (l <= 0 || l > DNS_LABEL_MAX)
                 return -EINVAL;
         if (l > decoded_max)
-                return -ENOSPC;
+                return -ENOBUFS;
 
         memcpy(decoded, buffer, l);
 
@@ -366,7 +366,7 @@ int dns_label_undo_idna(const char *encoded, size_t encoded_size, char *decoded,
         if (w <= 0)
                 return -EINVAL;
         if (w > decoded_max)
-                return -ENOSPC;
+                return -ENOBUFS;
 
         memcpy(decoded, result, w);
 
index a1795b3..7f53a8c 100644 (file)
@@ -39,7 +39,7 @@ static void test_dns_label_unescape_one(const char *what, const char *expect, si
 
 static void test_dns_label_unescape(void) {
         test_dns_label_unescape_one("hallo", "hallo", 6, 5);
-        test_dns_label_unescape_one("hallo", "hallo", 4, -ENOSPC);
+        test_dns_label_unescape_one("hallo", "hallo", 4, -ENOBUFS);
         test_dns_label_unescape_one("", "", 10, 0);
         test_dns_label_unescape_one("hallo\\.foobar", "hallo.foobar", 20, 12);
         test_dns_label_unescape_one("hallo.foobar", "hallo", 10, 5);
@@ -132,7 +132,7 @@ static void test_dns_label_unescape_suffix_one(const char *what, const char *exp
 
 static void test_dns_label_unescape_suffix(void) {
         test_dns_label_unescape_suffix_one("hallo", "hallo", "", 6, 5, 0);
-        test_dns_label_unescape_suffix_one("hallo", "hallo", "", 4, -ENOSPC, -ENOSPC);
+        test_dns_label_unescape_suffix_one("hallo", "hallo", "", 4, -ENOBUFS, -ENOBUFS);
         test_dns_label_unescape_suffix_one("", "", "", 10, 0, 0);
         test_dns_label_unescape_suffix_one("hallo\\.foobar", "hallo.foobar", "", 20, 12, 0);
         test_dns_label_unescape_suffix_one("hallo.foobar", "foobar", "hallo", 10, 6, 5);