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);
sw_octets text_record,
sw_uint32 text_record_len) {
+ AvahiStringList *txt;
assert(self);
AVAHI_WARN_LINKAGE;
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;
}
if (avahi_string_list_get_pair(self->index, &mkey, &mvalue, &msize) < 0)
return SW_E_UNKNOWN;
- avahi_strlcpy(key, mkey, SW_TEXT_RECORD_MAX_LEN);
+ strlcpy(key, mkey, SW_TEXT_RECORD_MAX_LEN);
memset(val, 0, SW_TEXT_RECORD_MAX_LEN);
memcpy(val, mvalue, msize);
*val_len = msize;