Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package ell for openSUSE:Factory checked in at 2021-09-25 00:35:15 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/ell (Old) and /work/SRC/openSUSE:Factory/.ell.new.1899 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ell" Sat Sep 25 00:35:15 2021 rev:23 rq:920159 version:0.44 Changes: -------- --- /work/SRC/openSUSE:Factory/ell/ell.changes 2021-09-09 23:07:22.904819645 +0200 +++ /work/SRC/openSUSE:Factory/.ell.new.1899/ell.changes 2021-09-25 00:35:55.367162474 +0200 @@ -1,0 +2,9 @@ +Sun Sep 19 10:11:39 UTC 2021 - Malte Ohmstede <malte.ohmst...@gmail.com> + +- update to release 0.44 + * Fix issue with allowing zero byte input for AEAD cipher. + * Fix issue with filling in DNS info in DHCP lease objects. + * Add support neighbor discovery utility helpers. + + +------------------------------------------------------------------- Old: ---- ell-0.43.tar.sign ell-0.43.tar.xz New: ---- ell-0.44.tar.sign ell-0.44.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ ell.spec ++++++ --- /var/tmp/diff_new_pack.uvDOh0/_old 2021-09-25 00:35:55.815162942 +0200 +++ /var/tmp/diff_new_pack.uvDOh0/_new 2021-09-25 00:35:55.815162942 +0200 @@ -18,7 +18,7 @@ %define lname libell0 Name: ell -Version: 0.43 +Version: 0.44 Release: 0 Summary: Wireless setup and cryptography library License: LGPL-2.1-or-later ++++++ ell-0.43.tar.xz -> ell-0.44.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ell-0.43/AUTHORS new/ell-0.44/AUTHORS --- old/ell-0.43/AUTHORS 2021-06-11 20:09:50.000000000 +0200 +++ new/ell-0.44/AUTHORS 2021-09-14 21:48:51.000000000 +0200 @@ -31,3 +31,4 @@ ??rico Nogueira <eric...@disroot.org> Mauro Condarelli <mc5...@mclink.it> Davide Caratti <davide.cara...@gmail.com> +Sergei Trofimovich <sly...@gmail.com> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ell-0.43/ChangeLog new/ell-0.44/ChangeLog --- old/ell-0.43/ChangeLog 2021-08-22 06:08:02.000000000 +0200 +++ new/ell-0.44/ChangeLog 2021-09-14 21:48:51.000000000 +0200 @@ -1,3 +1,8 @@ +ver 0.44: + Fix issue with allowing zero byte input for AEAD cipher. + Fix issue with filling in DNS info in DHCP lease objects. + Add support neighbor discovery utility helpers. + ver 0.43: Add support for DHCP Rapid Commit feature. Add support for DHCP authoritative mode feature. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ell-0.43/configure new/ell-0.44/configure --- old/ell-0.43/configure 2021-08-22 06:09:28.000000000 +0200 +++ new/ell-0.44/configure 2021-09-14 21:50:27.000000000 +0200 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for ell 0.43. +# Generated by GNU Autoconf 2.69 for ell 0.44. # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. @@ -587,8 +587,8 @@ # Identity of this package. PACKAGE_NAME='ell' PACKAGE_TARNAME='ell' -PACKAGE_VERSION='0.43' -PACKAGE_STRING='ell 0.43' +PACKAGE_VERSION='0.44' +PACKAGE_STRING='ell 0.44' PACKAGE_BUGREPORT='' PACKAGE_URL='' @@ -1350,7 +1350,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures ell 0.43 to adapt to many kinds of systems. +\`configure' configures ell 0.44 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1421,7 +1421,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of ell 0.43:";; + short | recursive ) echo "Configuration of ell 0.44:";; esac cat <<\_ACEOF @@ -1548,7 +1548,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -ell configure 0.43 +ell configure 0.44 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -1913,7 +1913,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by ell $as_me 0.43, which was +It was created by ell $as_me 0.44, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2776,7 +2776,7 @@ # Define the identity of the package. PACKAGE='ell' - VERSION='0.43' + VERSION='0.44' cat >>confdefs.h <<_ACEOF @@ -13646,7 +13646,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by ell $as_me 0.43, which was +This file was extended by ell $as_me 0.44, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -13712,7 +13712,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -ell config.status 0.43 +ell config.status 0.44 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ell-0.43/configure.ac new/ell-0.44/configure.ac --- old/ell-0.43/configure.ac 2021-08-22 06:08:02.000000000 +0200 +++ new/ell-0.44/configure.ac 2021-09-14 21:48:51.000000000 +0200 @@ -1,5 +1,5 @@ AC_PREREQ(2.60) -AC_INIT(ell, 0.43) +AC_INIT(ell, 0.44) AC_CONFIG_HEADERS(config.h) AC_CONFIG_AUX_DIR(build-aux) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ell-0.43/ell/cipher.c new/ell-0.44/ell/cipher.c --- old/ell-0.43/ell/cipher.c 2021-03-29 14:19:13.000000000 +0200 +++ new/ell-0.44/ell/cipher.c 2021-09-14 21:48:51.000000000 +0200 @@ -607,7 +607,10 @@ if (unlikely(!cipher)) return false; - if (unlikely(!in) || unlikely(!out)) + if (unlikely(!in && !ad) || unlikely(!out)) + return false; + + if (unlikely(!in && in_len) || unlikely(!ad && ad_len)) return false; if (cipher->type == L_AEAD_CIPHER_AES_CCM) { @@ -677,6 +680,10 @@ initialized = true; + for (c = 0; c < L_ARRAY_SIZE(local_impl_ciphers); c++) + if (HAVE_LOCAL_IMPLEMENTATION(c)) + supported_ciphers |= 1 << c; + sk = socket(PF_ALG, SOCK_SEQPACKET | SOCK_CLOEXEC, 0); if (sk < 0) return; @@ -698,10 +705,6 @@ supported_ciphers |= 1 << c; } - for (c = 0; c < L_ARRAY_SIZE(local_impl_ciphers); c++) - if (HAVE_LOCAL_IMPLEMENTATION(c)) - supported_ciphers |= 1 << c; - strcpy((char *) salg.salg_type, "aead"); for (a = L_AEAD_CIPHER_AES_CCM; a <= L_AEAD_CIPHER_AES_GCM; a++) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ell-0.43/ell/dhcp-server.c new/ell-0.44/ell/dhcp-server.c --- old/ell-0.43/ell/dhcp-server.c 2021-08-22 06:08:02.000000000 +0200 +++ new/ell-0.44/ell/dhcp-server.c 2021-09-14 21:48:51.000000000 +0200 @@ -316,6 +316,13 @@ lease->subnet_mask = server->netmask; lease->router = server->gateway; + if (server->dns_list) { + unsigned int i; + + for (i = 0; server->dns_list[i]; i++); + lease->dns = l_memdup(server->dns_list, (i + 1) * 4); + } + if (client_id) lease->client_id = l_memdup(client_id, client_id[0] + 1); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ell-0.43/ell/ell.sym new/ell-0.44/ell/ell.sym --- old/ell-0.43/ell/ell.sym 2021-08-22 06:08:02.000000000 +0200 +++ new/ell-0.44/ell/ell.sym 2021-09-14 21:48:51.000000000 +0200 @@ -663,6 +663,8 @@ l_rtnl_ifaddr_extract; l_rtnl_ifaddr_add; l_rtnl_ifaddr_delete; + l_rtnl_neighbor_get_hwaddr; + l_rtnl_neighbor_set_hwaddr; /* icmp6 */ l_icmp6_client_new; l_icmp6_client_free; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ell-0.43/ell/rtnl.c new/ell-0.44/ell/rtnl.c --- old/ell-0.43/ell/rtnl.c 2021-08-01 21:49:37.000000000 +0200 +++ new/ell-0.44/ell/rtnl.c 2021-09-14 21:48:51.000000000 +0200 @@ -27,6 +27,9 @@ #define _GNU_SOURCE #include <linux/if.h> #include <linux/icmpv6.h> +#include <linux/neighbour.h> +#include <linux/if_ether.h> +#include <net/if_arp.h> #include <sys/socket.h> #include <arpa/inet.h> #include <errno.h> @@ -34,6 +37,7 @@ #include "useful.h" #include "netlink.h" #include "log.h" +#include "util.h" #include "rtnl.h" #include "private.h" @@ -1311,3 +1315,126 @@ return _rtnl_route_change(rtnl, RTM_DELROUTE, ifindex, rt, cb, user_data, destroy); } + +struct rtnl_neighbor_get_data { + l_rtnl_neighbor_get_cb_t cb; + void *user_data; + l_netlink_destroy_func_t destroy; +}; + +static void rtnl_neighbor_get_cb(int error, uint16_t type, const void *data, + uint32_t len, void *user_data) +{ + struct rtnl_neighbor_get_data *cb_data = user_data; + const struct ndmsg *ndmsg = data; + struct rtattr *attr; + const uint8_t *hwaddr = NULL; + size_t hwaddr_len = 0; + + if (error != 0) + goto done; + + if (type != RTM_NEWNEIGH || len < NLMSG_ALIGN(sizeof(*ndmsg))) { + error = -EIO; + goto done; + } + + if (!(ndmsg->ndm_state & (NUD_PERMANENT | NUD_NOARP | NUD_REACHABLE))) { + error = -ENOENT; + goto done; + } + + attr = (void *) ndmsg + NLMSG_ALIGN(sizeof(*ndmsg)); + len -= NLMSG_ALIGN(sizeof(*ndmsg)); + + for (; RTA_OK(attr, len); attr = RTA_NEXT(attr, len)) + switch (attr->rta_type) { + case NDA_LLADDR: + hwaddr = RTA_DATA(attr); + hwaddr_len = RTA_PAYLOAD(attr); + break; + } + + if (!hwaddr) + error = -EIO; + +done: + if (cb_data->cb) { + cb_data->cb(error, hwaddr, hwaddr_len, cb_data->user_data); + cb_data->cb = NULL; + } +} + +static void rtnl_neighbor_get_destroy_cb(void *user_data) +{ + struct rtnl_neighbor_get_data *cb_data = user_data; + + if (cb_data->destroy) + cb_data->destroy(cb_data->user_data); + + l_free(cb_data); +} + +LIB_EXPORT uint32_t l_rtnl_neighbor_get_hwaddr(struct l_netlink *rtnl, + int ifindex, int family, + const void *ip, + l_rtnl_neighbor_get_cb_t cb, + void *user_data, + l_netlink_destroy_func_t destroy) +{ + size_t bufsize = NLMSG_ALIGN(sizeof(struct ndmsg)) + + RTA_SPACE(16); /* NDA_DST */ + uint8_t buf[bufsize]; + struct ndmsg *ndmsg = (struct ndmsg *) buf; + void *rta_buf = (void *) ndmsg + NLMSG_ALIGN(sizeof(struct ndmsg)); + __auto_type cb_data = struct_alloc(rtnl_neighbor_get_data, + cb, user_data, destroy); + uint32_t ret; + + memset(buf, 0, bufsize); + ndmsg->ndm_family = family; + ndmsg->ndm_ifindex = ifindex; + ndmsg->ndm_flags = 0; + + rta_buf += rta_add_address(rta_buf, NDA_DST, family, ip, ip); + + ret = l_netlink_send(rtnl, RTM_GETNEIGH, 0, ndmsg, + rta_buf - (void *) ndmsg, + rtnl_neighbor_get_cb, cb_data, + rtnl_neighbor_get_destroy_cb); + if (ret) + return ret; + + l_free(cb_data); + return 0; +} + +LIB_EXPORT uint32_t l_rtnl_neighbor_set_hwaddr(struct l_netlink *rtnl, + int ifindex, int family, + const void *ip, + const uint8_t *hwaddr, + size_t hwaddr_len, + l_netlink_command_func_t cb, + void *user_data, + l_netlink_destroy_func_t destroy) +{ + size_t bufsize = NLMSG_ALIGN(sizeof(struct ndmsg)) + + RTA_SPACE(16) + /* NDA_DST */ + RTA_SPACE(hwaddr_len); /* NDA_LLADDR */ + uint8_t buf[bufsize]; + struct ndmsg *ndmsg = (struct ndmsg *) buf; + void *rta_buf = (void *) ndmsg + NLMSG_ALIGN(sizeof(struct ndmsg)); + + memset(buf, 0, bufsize); + ndmsg->ndm_family = family; + ndmsg->ndm_ifindex = ifindex; + ndmsg->ndm_flags = 0; + ndmsg->ndm_state = NUD_REACHABLE; + + rta_buf += rta_add_address(rta_buf, NDA_DST, family, ip, ip); + rta_buf += rta_add_data(rta_buf, NDA_LLADDR, hwaddr, hwaddr_len); + + return l_netlink_send(rtnl, RTM_NEWNEIGH, NLM_F_CREATE | NLM_F_REPLACE, + ndmsg, rta_buf - (void *) ndmsg, + cb, user_data, destroy); +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ell-0.43/ell/rtnl.h new/ell-0.44/ell/rtnl.h --- old/ell-0.43/ell/rtnl.h 2021-08-01 21:49:37.000000000 +0200 +++ new/ell-0.44/ell/rtnl.h 2021-09-14 21:48:51.000000000 +0200 @@ -33,6 +33,10 @@ struct l_rtnl_address; struct l_rtnl_route; +typedef void (*l_rtnl_neighbor_get_cb_t) (int error, const uint8_t *hwaddr, + size_t hwaddr_len, + void *user_data); + struct l_rtnl_address *l_rtnl_address_new(const char *ip, uint8_t prefix_len); struct l_rtnl_address *l_rtnl_address_clone(const struct l_rtnl_address *orig); void l_rtnl_address_free(struct l_rtnl_address *addr); @@ -190,6 +194,19 @@ l_netlink_command_func_t cb, void *user_data, l_netlink_destroy_func_t destroy); + +uint32_t l_rtnl_neighbor_get_hwaddr(struct l_netlink *rtnl, int ifindex, + int family, const void *ip, + l_rtnl_neighbor_get_cb_t cb, + void *user_data, + l_netlink_destroy_func_t destroy); +uint32_t l_rtnl_neighbor_set_hwaddr(struct l_netlink *rtnl, int ifindex, + int family, const void *ip, + const uint8_t *hwaddr, + size_t hwaddr_len, + l_netlink_command_func_t cb, + void *user_data, + l_netlink_destroy_func_t destroy); #ifdef __cplusplus } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ell-0.43/ell/useful.h new/ell-0.44/ell/useful.h --- old/ell-0.43/ell/useful.h 2021-08-01 21:49:37.000000000 +0200 +++ new/ell-0.44/ell/useful.h 2021-09-14 21:48:51.000000000 +0200 @@ -83,3 +83,7 @@ return r ^ ((l ^ r) & mask); } + +#define struct_alloc(structname, ...) \ + (struct structname *) l_memdup(&(struct structname) { __VA_ARGS__ }, \ + sizeof(struct structname)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ell-0.43/unit/test-uuid.c new/ell-0.44/unit/test-uuid.c --- old/ell-0.43/unit/test-uuid.c 2019-04-03 19:49:21.000000000 +0200 +++ new/ell-0.44/unit/test-uuid.c 2021-09-14 21:48:51.000000000 +0200 @@ -227,18 +227,26 @@ { l_test_init(&argc, &argv); - l_test_add("/uuid/v3", test_v3, NULL); + if (l_checksum_is_supported(L_CHECKSUM_MD5, false)) + l_test_add("/uuid/v3", test_v3, NULL); if (l_getrandom_is_supported()) l_test_add("/uuid/v4", test_v4, NULL); - l_test_add("/uuid/v5", test_v5, NULL); - l_test_add("/uuid/to string", test_to_string, NULL); + if (l_checksum_is_supported(L_CHECKSUM_SHA1, false)) { + l_test_add("/uuid/v5", test_v5, NULL); + l_test_add("/uuid/to string", test_to_string, NULL); + } + l_test_add("/uuid/from string", test_from_string, NULL); - l_test_add("/uuid/from string/too short", test_from_string_too_short, NULL); - l_test_add("/uuid/from string/too long", test_from_string_too_long, NULL); - l_test_add("/uuid/from string/invalid variant", test_from_string_invalid_variant, NULL); - l_test_add("/uuid/from string/invalid hex", test_from_string_invalid_hex, NULL); + l_test_add("/uuid/from string/too short", + test_from_string_too_short, NULL); + l_test_add("/uuid/from string/too long", + test_from_string_too_long, NULL); + l_test_add("/uuid/from string/invalid variant", + test_from_string_invalid_variant, NULL); + l_test_add("/uuid/from string/invalid hex", + test_from_string_invalid_hex, NULL); return l_test_run();