]> git.meshlink.io Git - catta/blobdiff - avahi-compat-howl/text.c
l10n: Updated Italian (it) translation to 100%
[catta] / avahi-compat-howl / text.c
index cbf51c78a97e5969332b38bb7ace842beb8667db..3b717bef610cd54d02ecfdb7b11b0f73861fd2d9 100644 (file)
@@ -39,6 +39,22 @@ struct _sw_text_record {
     int buffer_valid;
 };
 
+#ifndef HAVE_STRLCPY
+
+static size_t strlcpy(char *dest, const char *src, size_t n) {
+    assert(dest);
+    assert(src);
+    
+    if (n > 0) {
+        strncpy(dest, src, n-1);
+        dest[n-1] = 0;
+    }
+    
+    return strlen(src);
+}
+
+#endif
+
 sw_result sw_text_record_init(sw_text_record *self) {
     assert(self);
 
@@ -178,6 +194,7 @@ sw_result sw_text_record_iterator_init(
     sw_octets text_record,
     sw_uint32 text_record_len) {
 
+    AvahiStringList *txt;
     assert(self);
 
     AVAHI_WARN_LINKAGE;
@@ -187,7 +204,13 @@ sw_result sw_text_record_iterator_init(
         return SW_E_UNKNOWN;
     }
 
-    (*self)->index = (*self)->strlst = avahi_string_list_reverse(avahi_string_list_parse(text_record, text_record_len));
+    if (avahi_string_list_parse(text_record, text_record_len, &txt) < 0) {
+        avahi_free(*self);
+        *self = NULL;
+        return SW_E_UNKNOWN;
+    }
+
+    (*self)->index = (*self)->strlst = avahi_string_list_reverse(txt);
     
     return SW_OKAY;
 }
@@ -205,8 +228,8 @@ sw_result sw_text_record_iterator_fina(sw_text_record_iterator self) {
 
 sw_result sw_text_record_iterator_next(
     sw_text_record_iterator self,
-    char key[255],
-    sw_uint8 val[255],
+    char key[SW_TEXT_RECORD_MAX_LEN],
+    sw_uint8 val[SW_TEXT_RECORD_MAX_LEN],
     sw_uint32 * val_len) {
 
     char *mkey = NULL, *mvalue = NULL;
@@ -223,7 +246,8 @@ sw_result sw_text_record_iterator_next(
     if (avahi_string_list_get_pair(self->index, &mkey, &mvalue, &msize) < 0)
         return SW_E_UNKNOWN;
 
-    avahi_strlcpy(key, mkey, 255);
+    strlcpy(key, mkey, SW_TEXT_RECORD_MAX_LEN);
+    memset(val, 0, SW_TEXT_RECORD_MAX_LEN);
     memcpy(val, mvalue, msize);
     *val_len = msize;