From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp1 ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms0.migadu.com with LMTPS id qFlHJUNopmCHxAAAgWs5BA (envelope-from ) for ; Thu, 20 May 2021 15:46:43 +0200 Received: from aspmx1.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp1 with LMTPS id UA7qIENopmBFMAAAbx9fmQ (envelope-from ) for ; Thu, 20 May 2021 13:46:43 +0000 Received: from mail.notmuchmail.org (nmbug.tethera.net [144.217.243.247]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id DD4B81B599 for ; Thu, 20 May 2021 15:46:42 +0200 (CEST) Received: from nmbug.tethera.net (localhost [127.0.0.1]) by mail.notmuchmail.org (Postfix) with ESMTP id C6E852AAD2; Thu, 20 May 2021 09:46:38 -0400 (EDT) Received: from lahtoruutu.iki.fi (lahtoruutu.iki.fi [IPv6:2a0b:5c81:1c1::37]) by mail.notmuchmail.org (Postfix) with ESMTPS id D4E122AAAB for ; Thu, 20 May 2021 09:46:36 -0400 (EDT) Received: from guru.guru-group.fi (guru.guru-group.fi [46.183.73.34]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) (Authenticated sender: too) by lahtoruutu.iki.fi (Postfix) with ESMTPSA id 7B82E1B002B6; Thu, 20 May 2021 16:46:32 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=iki.fi; s=lahtoruutu; t=1621518392; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=too4Sy+Ciia5CbFG6272ddcEpi+F2V+RuK4MJfkNUdI=; b=tLy7M+v/ynDET+cZ6Fj24FdWoRWLvPjT64YnsV2RTQazkrJMrb0T8uv/3gXSKdY3Ce5Hir BMpF585mhtVG6+kvJOe/RqT9n1h/g7THM50ztl9mV9/Ouwie5G18laU4y0iJEjvnm+Rwvr ft06414K1pBnyJdIk5WaV9PUrJ/A6MVmYo9AguskJNqJMVQ3kIqOknxuGg5pEv0kxA9iHl xhb2LVaT5YtLuRmV0vfwMF4TQf/UhpZULD4VFqIz7WvAS77Gn0sUO+Q/1cglPIcSFGsN4k vPJKdSPzOtfAuVO1syaI5YH0bGndY0ptElle5vAQv4mUKfPy/7A1nfaW22BkhQ== From: Tomi Ollila To: notmuch@notmuchmail.org Subject: [PATCH v4] test: replace notmuch_passwd_sanitize() with _libconfig_sanitize() Date: Thu, 20 May 2021 16:46:28 +0300 Message-Id: <20210520134628.11653-1-tomi.ollila@iki.fi> X-Mailer: git-send-email 2.30.0 MIME-Version: 1.0 ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=iki.fi; s=lahtoruutu; t=1621518392; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=too4Sy+Ciia5CbFG6272ddcEpi+F2V+RuK4MJfkNUdI=; b=ZhkSZWwaBo1cQ4D7C4sZswipDi9lIamNMuUXuF9qiEEr2K2VR1fJnuMQzjXevK34uuY8Kz HYW1jVQL5ySqQJsQARVYusTo404gmCSWyyq9QG83q5VjXCxPBJAKhvfw+ovt1jr1KcYMus HvX35EgDWfruktvdmsCatodhOPPLCCL4PQvaGgFYKePszZrl5K+tHZmR9rBYCzJw5lCEbf 1G0qcNR+2cdT8cjuJva0OR33HE6BJDQaRiT8pikxTkqEnYfnWRe+NkXssyq0ylZYxQ2Zae Xa1UixDn9hYdk4cbz8qWd3ouvj7/rj+3OoXxIBlh+LPGyHJ2wIQwRQ6KXxeSnA== ARC-Authentication-Results: i=1; ORIGINATING; auth=pass smtp.auth=too smtp.mailfrom=tomi.ollila@iki.fi ARC-Seal: i=1; s=lahtoruutu; d=iki.fi; t=1621518392; a=rsa-sha256; cv=none; b=bcNd8bRRpLFYeYLpJlEwgkbYm8bWQKyzAMZbkNkr8kxme+z+zxy+unievK/mAfUHhmcQZ0 DZ2GvjkN/u8yNqgYYPajKQEAi4p9H5o/d8REJZ90MwiaizPcIdTye2Nw2C14ZDD7vWSSQD tcAoVwSzvIQwOjYoNSF/bHWTVIqsoiNovI+jGMGRSQyvlKULyRgteaKmT87sAFjxjs2NfW KQx0VZPEXtGRWjjcrOePQ4MngDfLeX8IPeoHyPctUn599TC14uOCbewYWWXxDqPqh8nkRr qMic/o/C3pb+qiA3wsbsoNmyX/ZJFjwxguOyC/nveyST5wyqLS050+uKbnMgxA== Message-ID-Hash: A3S4AXDBCET6IOXOJKK3QCXWT3YUHNVG X-Message-ID-Hash: A3S4AXDBCET6IOXOJKK3QCXWT3YUHNVG X-MailFrom: tomi.ollila@iki.fi X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-notmuch.notmuchmail.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header CC: tomi.ollila@iki.fi X-Mailman-Version: 3.2.1 Precedence: list List-Id: "Use and development of the notmuch mail system." List-Help: List-Post: List-Subscribe: List-Unsubscribe: Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Migadu-Flow: FLOW_IN ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1621518403; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding:list-id:list-help: list-unsubscribe:list-subscribe:list-post:dkim-signature; bh=p+wMCzin9tH+Bl0A5AwHkR6pgplrS7bAQObcVQXVawg=; b=Jg3rBySMcEPgvRV8vjr4TNSAbEUiGVoX/xkH45OWafNgxYV6kbrN2AcfYhJ0Ow5lbxMroK UaiHWqYNjIMz61z6BrZHwWCLIUP2TM+JPD7YzTYUbfsm6medmtX5ps4uhFpW/cuChZ+GlK U6wvMbtSUmSvZlrzWoyOz24edutqM3H9mm9WkY6W+GAmYDLs5BTTt403YT8XGKFrCCA9eX ENodWnztKMMMYQ5c17z58ZldRR31+YsCKfaLMdeprE7isINbi4M5OCbS76yorv08Ot/rPv UfB0h+q7dG6C0cRJ4Upb3Ka/76X5SR98F/gF4WqaJfyHAFcGoKtraTphLsyuLg== ARC-Seal: i=2; s=key1; d=yhetil.org; t=1621518403; a=rsa-sha256; cv=fail; b=lLVrwj7x5RkxYcV7mH69o+ndgCBv96rtSjJ5k8XxY/cPlVyCEkUbb2b5p/qzw2fmMA5rDW v58JAGIr5jkEV1C9lWhluLRsFuOcok97NQbf5m0b74E7vMtH6lLe+y/Z90c4Z1sLKnpSQp L3/N3wU5WKA/yoUiTmZcWBofU1gTasaOW7ZjsG3whQSAFLbR2fZbJEj/dlcfQ9wuCLpcc7 902tLqV1YCMGFCSdwuI/SOcqvWwRgieEuBHqaBqeFWbaQeds+Cn/UDTQ/3L3DUe/sTM6BX wuIliTjxAPwT0qa6bPHohcnJ+hh/ItMQasYIkxTV9iGqZc8xRN+xbLfeBHXgKg== ARC-Authentication-Results: i=2; aspmx1.migadu.com; dkim=fail ("body hash did not verify") header.d=iki.fi header.s=lahtoruutu header.b="tLy7M+v/"; arc=reject ("signature check failed: fail, {[1] = sig:iki.fi:reject}"); dmarc=none; spf=pass (aspmx1.migadu.com: domain of notmuch-bounces@notmuchmail.org designates 144.217.243.247 as permitted sender) smtp.mailfrom=notmuch-bounces@notmuchmail.org X-Migadu-Spam-Score: 1.92 Authentication-Results: aspmx1.migadu.com; dkim=fail ("body hash did not verify") header.d=iki.fi header.s=lahtoruutu header.b="tLy7M+v/"; arc=reject ("signature check failed: fail, {[1] = sig:iki.fi:reject}"); dmarc=none; spf=pass (aspmx1.migadu.com: domain of notmuch-bounces@notmuchmail.org designates 144.217.243.247 as permitted sender) smtp.mailfrom=notmuch-bounces@notmuchmail.org X-Migadu-Queue-Id: DD4B81B599 X-Spam-Score: 1.92 X-Migadu-Scanner: scn0.migadu.com X-TUID: 2b/jmR9eXlRZ notmuch_passwd_sanitize() in test-lib.sh is too generic, it cannot work in many cases... The more specific version _libconfig_sanitize() replaces it in T590-libconfig.sh and the code that uses it is modified to output the keys (ascending numbers printed in hex) so the sanitizer knows what to sanitize in which lines... "@" + fqdn -> "@FQDN" replacement is used as fqdn could -- in theory -- be substring of 'USERNAME'. 'user -> 'USER_FULL_NAME replacement to work in cases where user is empty -- as only first ' is replaced that works as expected. In addition to ".(none)" now also ".localdomain" is filtered from USERNAME@FQDN. /dev/fd/{n} is not defined in posix, but it is portable enough (if it weren't it is easy to fix -- now code looks clearer). --- v3 in id:20210518055443.21964-1-tomi.ollila@iki.fi Change: using heredoc and /dev/fd/3 in in _libconfig_sanitize, so "'" can be clearly used in the embedded python program. test/T590-libconfig.sh | 96 +++++++++++++++++++++++++----------------- test/test-lib.sh | 20 --------- 2 files changed, 58 insertions(+), 58 deletions(-) diff --git a/test/T590-libconfig.sh b/test/T590-libconfig.sh index 745e1bb4..8f775f70 100755 --- a/test/T590-libconfig.sh +++ b/test/T590-libconfig.sh @@ -5,6 +5,25 @@ test_description="library config API" add_email_corpus +_libconfig_sanitize() { + ${NOTMUCH_PYTHON} /dev/fd/3 3<<'EOF' +import os, sys, pwd, socket + +pw = pwd.getpwuid(os.getuid()) +user = pw.pw_name +name = pw.pw_gecos.partition(",")[0] +fqdn = socket.getaddrinfo(socket.gethostname(), 0, 0, + socket.SOCK_STREAM, 0, socket.AI_CANONNAME)[0][3] +for l in sys.stdin: + if l[:3] == "8: ": + l = l.replace(user, "USERNAME", 1).replace("@" + fqdn, "@FQDN", 1) + l = l.replace(".(none)", "", 1).replace(".localdomain", "", 1) + elif l[:3] == "a: ": + l = l.replace("'" + name, "'USER_FULL_NAME", 1) + sys.stdout.write(l) +EOF +} + cat < c_head #include #include @@ -380,26 +399,26 @@ cat c_head - c_tail <<'EOF' | test_C ${MAIL_DIR} '' %NULL% key < NOTMUCH_CONFIG_LAST; key = (notmuch_config_key_t)(key + 1)) { const char *val = notmuch_config_get (db, key); - printf("%s\n", val ? val : "NULL" ); + printf("%x: '%s'\n", key, val ? val : "NULL" ); } } EOF -notmuch_passwd_sanitize < OUTPUT > OUTPUT.clean +_libconfig_sanitize < OUTPUT > OUTPUT.clean cat <<'EOF' >EXPECTED == stdout == -MAIL_DIR -MAIL_DIR -MAIL_DIR/.notmuch/hooks -MAIL_DIR/.notmuch/backups - -unread;inbox - -true -USERNAME@FQDN -NULL -USER_FULL_NAME +0: 'MAIL_DIR' +1: 'MAIL_DIR' +2: 'MAIL_DIR/.notmuch/hooks' +3: 'MAIL_DIR/.notmuch/backups' +4: '' +5: 'unread;inbox' +6: '' +7: 'true' +8: 'USERNAME@FQDN' +9: 'NULL' +a: 'USER_FULL_NAME' == stderr == EOF unset MAILDIR @@ -694,23 +713,23 @@ cat c_head2 - c_tail <<'EOF' | test_C ${MAIL_DIR} %NULL% %NULL% key < NOTMUCH_CONFIG_LAST; key = (notmuch_config_key_t)(key + 1)) { const char *val = notmuch_config_get (db, key); - printf("%s\n", val ? val : "NULL" ); + printf("%x: '%s'\n", key, val ? val : "NULL" ); } } EOF cat <<'EOF' >EXPECTED == stdout == -MAIL_DIR -MAIL_DIR -MAIL_DIR/.notmuch/hooks -MAIL_DIR/.notmuch/backups -foo;bar;fub -unread;inbox -sekrit_junk -true -test_suite@notmuchmail.org -test_suite_other@notmuchmail.org;test_suite@otherdomain.org -Notmuch Test Suite +0: 'MAIL_DIR' +1: 'MAIL_DIR' +2: 'MAIL_DIR/.notmuch/hooks' +3: 'MAIL_DIR/.notmuch/backups' +4: 'foo;bar;fub' +5: 'unread;inbox' +6: 'sekrit_junk' +7: 'true' +8: 'test_suite@notmuchmail.org' +9: 'test_suite_other@notmuchmail.org;test_suite@otherdomain.org' +a: 'Notmuch Test Suite' == stderr == EOF test_expect_equal_file EXPECTED OUTPUT @@ -723,25 +742,26 @@ cat c_head2 - c_tail <<'EOF' | test_C ${MAIL_DIR} /nonexistent %NULL% key < NOTMUCH_CONFIG_LAST; key = (notmuch_config_key_t)(key + 1)) { const char *val = notmuch_config_get (db, key); - printf("%s\n", val ? val : "NULL" ); + printf("%x: '%s'\n", key, val ? val : "NULL" ); } } EOF -notmuch_passwd_sanitize < OUTPUT > OUTPUT.clean +_libconfig_sanitize < OUTPUT > OUTPUT.clean + cat <<'EOF' >EXPECTED == stdout == -MAIL_DIR -MAIL_DIR -MAIL_DIR/.notmuch/hooks -MAIL_DIR/.notmuch/backups - -unread;inbox - -true -USERNAME@FQDN -NULL -USER_FULL_NAME +0: 'MAIL_DIR' +1: 'MAIL_DIR' +2: 'MAIL_DIR/.notmuch/hooks' +3: 'MAIL_DIR/.notmuch/backups' +4: '' +5: 'unread;inbox' +6: '' +7: 'true' +8: 'USERNAME@FQDN' +9: 'NULL' +a: 'USER_FULL_NAME' == stderr == EOF test_expect_equal_file EXPECTED OUTPUT.clean diff --git a/test/test-lib.sh b/test/test-lib.sh index 6be5d11f..35bea097 100644 --- a/test/test-lib.sh +++ b/test/test-lib.sh @@ -561,26 +561,6 @@ notmuch_built_with_sanitize () { sed 's/^built_with[.]\(.*\)=.*$/built_with.\1=something/' } -notmuch_passwd_sanitize () { - ${NOTMUCH_PYTHON} -c' -import os, sys, pwd, socket - -pw = pwd.getpwuid(os.getuid()) -user = pw.pw_name -name = pw.pw_gecos.partition(",")[0] -fqdn = socket.getaddrinfo(socket.gethostname(), 0, 0, socket.SOCK_STREAM, 0, socket.AI_CANONNAME)[0][3] - -for l in sys.stdin: - if user: - l = l.replace(user, "USERNAME") - if fqdn: - l = l.replace(fqdn, "FQDN").replace(".(none)","") - if name: - l = l.replace(name, "USER_FULL_NAME") - sys.stdout.write(l) -' -} - notmuch_config_sanitize () { notmuch_dir_sanitize | notmuch_built_with_sanitize } -- 2.25.1