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-05-15 23:15:24
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ell (Old)
 and      /work/SRC/openSUSE:Factory/.ell.new.2988 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "ell"

Sat May 15 23:15:24 2021 rev:19 rq:892311 version:0.40

Changes:
--------
--- /work/SRC/openSUSE:Factory/ell/ell.changes  2021-04-08 22:13:04.121532588 
+0200
+++ /work/SRC/openSUSE:Factory/.ell.new.2988/ell.changes        2021-05-15 
23:16:31.356657574 +0200
@@ -1,0 +2,7 @@
+Tue May 11 21:32:41 UTC 2021 - Dirk M??ller <dmuel...@suse.com>
+
+- update to 0.40:
+  * Fix issue with handling failure from missing CA certificates.
+  * Fix issue with handling DBus.Introspectable queries.
+
+-------------------------------------------------------------------

Old:
----
  ell-0.39.tar.sign
  ell-0.39.tar.xz

New:
----
  ell-0.40.tar.sign
  ell-0.40.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ ell.spec ++++++
--- /var/tmp/diff_new_pack.v23qYH/_old  2021-05-15 23:16:32.256654060 +0200
+++ /var/tmp/diff_new_pack.v23qYH/_new  2021-05-15 23:16:32.256654060 +0200
@@ -16,15 +16,14 @@
 #
 
 
-Name:           ell
 %define lname   libell0
-Version:        0.39
+Name:           ell
+Version:        0.40
 Release:        0
 Summary:        Wireless setup and cryptography library
 License:        LGPL-2.1-or-later
 Group:          Development/Libraries/C and C++
 URL:            https://01.org/ell
-#Git-URL:       https://git.kernel.org/pub/scm/libs/ell/ell.git/
 Source:         
https://mirrors.kernel.org/pub/linux/libs/ell/%name-%version.tar.xz
 Source2:        
https://mirrors.kernel.org/pub/linux/libs/ell/%name-%version.tar.sign
 Source3:        %name.keyring

++++++ ell-0.39.tar.xz -> ell-0.40.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ell-0.39/ChangeLog new/ell-0.40/ChangeLog
--- old/ell-0.39/ChangeLog      2021-03-29 14:19:13.000000000 +0200
+++ new/ell-0.40/ChangeLog      2021-05-02 13:06:43.000000000 +0200
@@ -1,3 +1,7 @@
+ver 0.40:
+       Fix issue with handling failure from missing CA certificates.
+       Fix issue with handling DBus.Introspectable queries.
+
 ver 0.39:
        Add support for serialized test execution framework.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ell-0.39/configure new/ell-0.40/configure
--- old/ell-0.39/configure      2021-03-29 14:20:57.000000000 +0200
+++ new/ell-0.40/configure      2021-05-02 13:08:16.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.39.
+# Generated by GNU Autoconf 2.69 for ell 0.40.
 #
 #
 # 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.39'
-PACKAGE_STRING='ell 0.39'
+PACKAGE_VERSION='0.40'
+PACKAGE_STRING='ell 0.40'
 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.39 to adapt to many kinds of systems.
+\`configure' configures ell 0.40 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.39:";;
+     short | recursive ) echo "Configuration of ell 0.40:";;
    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.39
+ell configure 0.40
 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.39, which was
+It was created by ell $as_me 0.40, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -2781,7 +2781,7 @@
 
 # Define the identity of the package.
  PACKAGE='ell'
- VERSION='0.39'
+ VERSION='0.40'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -13651,7 +13651,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.39, which was
+This file was extended by ell $as_me 0.40, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -13717,7 +13717,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.39
+ell config.status 0.40
 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.39/configure.ac new/ell-0.40/configure.ac
--- old/ell-0.39/configure.ac   2021-03-29 14:19:13.000000000 +0200
+++ new/ell-0.40/configure.ac   2021-05-02 13:06:43.000000000 +0200
@@ -1,5 +1,5 @@
 AC_PREREQ(2.60)
-AC_INIT(ell, 0.39)
+AC_INIT(ell, 0.40)
 
 AC_CONFIG_HEADERS(config.h)
 AC_CONFIG_AUX_DIR(build-aux)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ell-0.39/ell/cert.c new/ell-0.40/ell/cert.c
--- old/ell-0.39/ell/cert.c     2021-03-29 14:19:13.000000000 +0200
+++ new/ell-0.40/ell/cert.c     2021-05-02 13:06:43.000000000 +0200
@@ -35,6 +35,8 @@
 #include "pem-private.h"
 #include "cert.h"
 #include "cert-private.h"
+#include "tls.h"
+#include "tls-private.h"
 #include "missing.h"
 
 #define X509_CERTIFICATE_POS                   0
@@ -1635,14 +1637,34 @@
                if (err != -ENOMSG)
                        goto close;
 
-               /* Try PEM */
+               /* Try other formats */
+       }
+
+       /*
+        * For backwards compatibility try the TLS internal struct Certificate
+        * format as may be captured by PCAP (no future support guaranteed).
+        */
+       if (out_certchain && !password && file.st.st_size &&
+                       tls_parse_certificate_list(file.data, file.st.st_size,
+                                                       out_certchain) == 0) {
+               error = false;
+
+               if (out_privkey)
+                       *out_privkey = NULL;
+
+               if (out_encrypted)
+                       *out_encrypted = false;
+
+               goto close;
        }
 
        /*
         * RFC 7486 allows whitespace and possibly other data before the
         * PEM "encapsulation boundary" so rather than check if the start
         * of the data looks like PEM, we fall back to this format if the
-        * data didn't look like anything else we knew about.
+        * data didn't look like anything else we knew about.  Note this
+        * succeeds for empty files and files without any PEM markers,
+        * returning NULL chain and privkey.
         */
        if (cert_try_load_pem_format((const char *) file.data, file.st.st_size,
                                        password, out_certchain, out_privkey,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ell-0.39/ell/dbus-service.c 
new/ell-0.40/ell/dbus-service.c
--- old/ell-0.39/ell/dbus-service.c     2021-03-29 14:19:13.000000000 +0200
+++ new/ell-0.40/ell/dbus-service.c     2021-05-02 13:06:43.000000000 +0200
@@ -1709,16 +1709,29 @@
 {
        struct object_node *node;
        struct child_node *child;
+       bool path_is_object = true;
 
        node = l_hashmap_lookup(tree->objects, path);
-       if (!node)
+       if (!node) {
+               path_is_object = false;
                node = _dbus_object_tree_lookup(tree, path);
+       }
 
        l_string_append(buf, XML_HEAD);
        l_string_append(buf, "<node>\n");
 
        if (node) {
-               l_string_append(buf, static_introspectable);
+               /*
+                * We emit org.freedesktop.DBus.Introspectable only in case the
+                * object node corresponds to a registered object, i.e.
+                * exposes anything other than:
+                * - org.freedesktop.DBus.Introspectable
+                * - org.freedesktop.DBus.Peer
+                * - org.freedesktop.DBus.Properties
+                */
+               if (path_is_object)
+                       l_string_append(buf, static_introspectable);
+
                l_queue_foreach(node->instances,
                                        generate_interface_instance, buf);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ell-0.39/ell/ell.sym new/ell-0.40/ell/ell.sym
--- old/ell-0.39/ell/ell.sym    2021-03-29 14:19:13.000000000 +0200
+++ new/ell-0.40/ell/ell.sym    2021-05-02 13:06:43.000000000 +0200
@@ -443,6 +443,7 @@
        l_settings_set_debug;
        l_settings_get_groups;
        l_settings_has_group;
+       l_settings_add_group;
        l_settings_get_keys;
        l_settings_has_key;
        l_settings_get_value;
@@ -670,9 +671,9 @@
        l_tester_destroy;
        l_tester_start;
        l_tester_summarize;
-       l_tester_test_add;
-       l_tester_test_add_full;
-       l_tester_test_get_stage;
+       l_tester_add;
+       l_tester_add_full;
+       l_tester_get_stage;
        l_tester_get_data;
        l_tester_pre_setup_complete;
        l_tester_pre_setup_failed;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ell-0.39/ell/settings.c new/ell-0.40/ell/settings.c
--- old/ell-0.39/ell/settings.c 2021-03-29 14:19:13.000000000 +0200
+++ new/ell-0.40/ell/settings.c 2021-05-02 13:06:43.000000000 +0200
@@ -866,6 +866,34 @@
        return true;
 }
 
+LIB_EXPORT bool l_settings_add_group(struct l_settings *settings,
+                                       const char *group_name)
+{
+       struct group_data *group;
+
+       if (unlikely(!settings || !group_name))
+               return false;
+
+       if (!validate_group_name(group_name)) {
+               l_util_debug(settings->debug_handler, settings->debug_data,
+                               "Invalid group name %s", group_name);
+               return false;
+       }
+
+       group = l_queue_find(settings->groups, group_match, group_name);
+       if (group) {
+               l_util_debug(settings->debug_handler, settings->debug_data,
+                               "Group %s exists", group_name);
+               return true;
+       }
+
+       group = l_new(struct group_data, 1);
+       group->name = l_strdup(group_name);
+       group->settings = l_queue_new();
+       l_queue_push_tail(settings->groups, group);
+       return true;
+}
+
 static bool validate_key(const char *key)
 {
        int i;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ell-0.39/ell/settings.h new/ell-0.40/ell/settings.h
--- old/ell-0.39/ell/settings.h 2020-11-29 22:35:22.000000000 +0100
+++ new/ell-0.40/ell/settings.h 2021-05-02 13:06:43.000000000 +0200
@@ -54,6 +54,8 @@
 char **l_settings_get_keys(const struct l_settings *settings,
                                                        const char *group_name);
 
+bool l_settings_add_group(struct l_settings *settings, const char *group_name);
+
 bool l_settings_has_group(const struct l_settings *settings,
                                                        const char *group_name);
 bool l_settings_has_key(const struct l_settings *settings,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ell-0.39/ell/tester.c new/ell-0.40/ell/tester.c
--- old/ell-0.39/ell/tester.c   2021-03-29 14:19:13.000000000 +0200
+++ new/ell-0.40/ell/tester.c   2021-05-02 13:06:43.000000000 +0200
@@ -131,18 +131,11 @@
        struct l_tester *tester = user_data;
        struct test_case *test;
 
-       printf("teardown %p\n", tester->test_entry);
-
        test = tester->test_entry->data;
-       printf("teardown data %p\n", tester->test_entry->data);
        test->stage = L_TESTER_STAGE_TEARDOWN;
        test->teardown = false;
 
-       printf("Test name %p\n", test->name);
-       printf("Test name %s\n", test->name);
        print_progress(test->name, COLOR_MAGENTA, "teardown");
-       printf("teardown\n");
-
 
        if (test->teardown_func)
                test->teardown_func(test->test_data);
@@ -189,7 +182,7 @@
 
        if (test->timeout > 0)
                test->run_timer = l_timeout_create(test->timeout, test_timeout,
-                                                               test, NULL);
+                                                               tester, NULL);
 
        test->stage = L_TESTER_STAGE_PRE_SETUP;
 
@@ -286,6 +279,9 @@
 
        print_progress(test->name, COLOR_RED, "pre setup failed");
 
+       l_timeout_remove(test->run_timer);
+       test->run_timer = NULL;
+
        l_idle_oneshot(done_callback, tester, NULL);
 }
 
@@ -508,7 +504,7 @@
 
        wait->func(wait->user_data);
 
-       free(wait);
+       l_free(wait);
 
        l_timeout_remove(timer);
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ell-0.39/ell/tls.c new/ell-0.40/ell/tls.c
--- old/ell-0.39/ell/tls.c      2021-03-29 14:19:13.000000000 +0200
+++ new/ell-0.40/ell/tls.c      2021-05-02 13:06:43.000000000 +0200
@@ -1892,7 +1892,7 @@
                                        const uint8_t *buf, size_t len)
 {
        size_t total;
-       struct l_certchain *certchain = NULL;
+       _auto_(l_certchain_free) struct l_certchain *certchain = NULL;
        struct l_cert *leaf;
        size_t der_len;
        const uint8_t *der;
@@ -1914,7 +1914,7 @@
                TLS_DISCONNECT(TLS_ALERT_DECODE_ERROR, 0,
                                "Error decoding peer certificate chain");
 
-               goto done;
+               return;
        }
 
        /*
@@ -1930,12 +1930,12 @@
                        TLS_DISCONNECT(TLS_ALERT_HANDSHAKE_FAIL, 0,
                                        "Server sent no certificate chain");
 
-                       goto done;
+                       return;
                }
 
                TLS_SET_STATE(TLS_HANDSHAKE_WAIT_KEY_EXCHANGE);
 
-               goto done;
+               return;
        }
 
        if (tls->cert_dump_path) {
@@ -1956,12 +1956,33 @@
         * against our CAs if we have any.
         */
        if (!l_certchain_verify(certchain, tls->ca_certs, &error_str)) {
-               TLS_DISCONNECT(TLS_ALERT_BAD_CERT, 0,
-                               "Peer certchain verification failed "
-                               "consistency check%s: %s", tls->ca_certs ?
-                               " or against local CA certs" : "", error_str);
+               if (tls->ca_certs) {
+                       TLS_DISCONNECT(TLS_ALERT_BAD_CERT, 0,
+                                       "Peer certchain verification failed "
+                                       "consistency check%s: %s",
+                                       tls->ca_certs ?
+                                       " or against local CA certs" : "",
+                                       error_str);
+
+                       return;
+               }
 
-               goto done;
+               /*
+                * Until the mainstream kernel can handle the occasionally
+                * used certificates without the AKID extension (both root,
+                * which is legal, and non-root, which is iffy but still
+                * happens) don't fail on peer certificate chain verification
+                * failure when CA certificates were not provided.  Knowing
+                * that the chain is self-consistent alone doesn't
+                * authenticate the peer in any way.  Only warn when it looks
+                * like the chain is bad but parses and we can get the peer
+                * public key from it below.
+                */
+               TLS_DEBUG("Peer certchain verification failed (%s.)  No local "
+                               "CA certs provided so proceeding anyway.  This "
+                               "failure can signal a security issue or a "
+                               "known kernel problem with some certificates.",
+                               error_str);
        }
 
        /*
@@ -1978,7 +1999,7 @@
                                "pending cipher suite %s",
                                tls->pending.cipher_suite->name);
 
-               goto done;
+               return;
        }
 
        if (tls->subject_mask && !tls_cert_domains_match_mask(leaf,
@@ -1992,7 +2013,7 @@
                l_free(mask);
                l_free(subject_str);
 
-               goto done;
+               return;
        }
 
        /* Save the end-entity certificate and free the chain */
@@ -2004,7 +2025,7 @@
                TLS_DISCONNECT(TLS_ALERT_UNSUPPORTED_CERT, 0,
                                "Error loading peer public key to kernel");
 
-               goto done;
+               return;
        }
 
        if (!l_key_get_info(tls->peer_pubkey, L_KEY_RSA_PKCS1_V1_5,
@@ -2013,7 +2034,7 @@
                TLS_DISCONNECT(TLS_ALERT_INTERNAL_ERROR, 0,
                                "Can't l_key_get_info for peer public key");
 
-               goto done;
+               return;
        }
 
        tls->peer_pubkey_size /= 8;
@@ -2024,14 +2045,11 @@
        else
                TLS_SET_STATE(TLS_HANDSHAKE_WAIT_HELLO_DONE);
 
-       goto done;
+       return;
 
 decode_error:
        TLS_DISCONNECT(TLS_ALERT_DECODE_ERROR, 0,
                        "TLS_CERTIFICATE decode error");
-
-done:
-       l_certchain_free(certchain);
 }
 
 static void tls_handle_certificate_request(struct l_tls *tls,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ell-0.39/ell/util.h new/ell-0.40/ell/util.h
--- old/ell-0.39/ell/util.h     2021-03-29 14:19:13.000000000 +0200
+++ new/ell-0.40/ell/util.h     2021-05-02 13:06:43.000000000 +0200
@@ -245,6 +245,9 @@
        l_free(*p);
 }
 
+#define l_steal_ptr(ptr) \
+       (__extension__ ({ typeof(ptr) _tmp = (ptr); (ptr) = NULL; _tmp; }))
+
 /**
  * l_new:
  * @type: type of structure
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ell-0.39/tools/certchain-verify.c 
new/ell-0.40/tools/certchain-verify.c
--- old/ell-0.39/tools/certchain-verify.c       2018-12-11 12:27:44.000000000 
+0100
+++ new/ell-0.40/tools/certchain-verify.c       2021-05-02 13:06:43.000000000 
+0200
@@ -23,72 +23,16 @@
 #endif
 
 #include <stdio.h>
-#include <errno.h>
-#include <stdint.h>
-#include <stdbool.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <sys/mman.h>
 
 #include <ell/ell.h>
-#include "ell/tls-private.h"
-
-static int load_cert_chain(const char *file, struct l_certchain **certchain)
-{
-       int fd;
-       struct stat st;
-       char *data;
-       int err;
-
-       fd = open(file, O_RDONLY);
-       if (fd < 0) {
-               fprintf(stderr, "Could not open %s: %s\n",
-                                               file, strerror(errno));
-               return -errno;
-       }
-
-       if (fstat(fd, &st) < 0) {
-               err = -errno;
-               fprintf(stderr, "Could not stat %s: %s\n",
-                                               file, strerror(errno));
-               goto close_file;
-       }
-
-       if (st.st_size == 0) {
-               err = -EINVAL;
-               fprintf(stderr, "Certificate file %s is empty!\n", file);
-               goto close_file;
-       }
-
-       data = mmap(NULL, st.st_size, PROT_READ, MAP_SHARED, fd, 0);
-       if (data == MAP_FAILED) {
-               err = -errno;
-               fprintf(stderr, "Could not mmap %s: %s\n",
-                                               file, strerror(errno));
-               goto close_file;
-       }
-
-       err = tls_parse_certificate_list(data, st.st_size, certchain);
-       if (err < 0)
-               fprintf(stderr, "Could not parse certificate list: %s\n",
-                                               strerror(-err));
-
-       munmap(data, st.st_size);
-
-close_file:
-       close(fd);
-       return err;
-}
 
 static void usage(const char *bin)
 {
-       printf("%s - TLS certificate chain verification utility\n\n", bin);
+       printf("%s - Certificate chain verification utility\n\n", bin);
 
-       printf("Usage: %s [options] <ca_cert file> <raw certificates file>\n"
-               "  <ca_cert file> - local CA Certificate to validate against\n"
-               "  <raw certificates file> - Certificates obtained from PCAP\n"
+       printf("Usage: %s [options] <ca_cert file> <certchain container>\n"
+               "  <ca_cert file> - local CA Certificates to validate against\n"
+               "  <certchain container> - certificate chain to verify\n"
                "  --help\n\n", bin);
 }
 
@@ -97,7 +41,6 @@
        int status = EXIT_FAILURE;
        struct l_certchain *certchain;
        struct l_queue *ca_certs;
-       int err;
        const char *error_str;
 
        if (argc != 3) {
@@ -107,8 +50,7 @@
 
        l_log_set_stderr();
 
-       err = load_cert_chain(argv[2], &certchain);
-       if (err < 0)
+       if (!l_cert_load_container_file(argv[2], NULL, &certchain, NULL, NULL))
                goto done;
 
        if (!certchain) {

Reply via email to