Bug 28231 - Zu ungenauer sed Ausdruck beim ermitteln des Bind-DN
Zu ungenauer sed Ausdruck beim ermitteln des Bind-DN
Status: RESOLVED DUPLICATE of bug 19430
Product: UCS
Classification: Unclassified
Component: Join (univention-join)
UCS 3.0
Other Linux
: P5 normal (vote)
: UCS 3.1-x
Assigned To: Philipp Hahn
:
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2012-08-16 08:26 CEST by Janis Meybohm
Modified: 2012-08-16 11:47 CEST (History)
2 users (show)

See Also:
What kind of report is it?: ---
What type of bug is this?: ---
Who will be affected by this bug?: ---
How will those affected feel about the bug?: ---
User Pain:
Enterprise Customer affected?:
School Customer affected?:
ISV affected?:
Waiting Support:
Flags outvoted (downgraded) after PO Review:
Ticket number:
Bug group (optional): Cleanup
Max CVSS v3 score:
meybohm: Patch_Available+


Attachments
Korrigierter sed Ausdruck (558 bytes, patch)
2012-08-16 08:26 CEST, Janis Meybohm
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Janis Meybohm univentionstaff 2012-08-16 08:26:56 CEST
Created attachment 4598 [details]
Korrigierter sed Ausdruck

2012081621000484

Ein zu ungenauer sed Ausdruck in univention-join kann (z.B: wenn ein Extended
Attibute mit "DN: " im Namen existiert) dazu führen dass der Bind-DN nicht
korrekt ermittelt wird und der Join damit fehlschlägt.
Comment 1 Philipp Hahn univentionstaff 2012-08-16 09:21:49 CEST
Breits für UCS-3.1 mit svn34833 im Rahmen von Bug #19430 korrigiert.

*** This bug has been marked as a duplicate of bug 19430 ***
Comment 2 Philipp Hahn univentionstaff 2012-08-16 11:47:23 CEST
Es gibt aber noch einige weitere Stellen, wo prinzipiell das selbe Problem auftreten kann:
$ git grep -ic '\<s\(.\)DN: \1\1'
base/univention-lib/shell/ldap.sh:1
base/univention-pam/lock-user:1
base/univention-server/managed-client:1
base/univention-server/mobile-client:1
base/univention-system-setup/usr/lib/univention-system-setup/scripts/basis/10hostname:14
base/univention-system-setup/usr/lib/univention-system-setup/scripts/basis/16windows_domain:1
base/univention-system-setup/usr/lib/univention-system-setup/scripts/net/10interfaces:4
base/univention-system-setup/usr/lib/univention-system-setup/scripts/setup_utils.sh:1
management/univention-directory-manager-modules/scripts/fix_primary_group_membership:2
management/univention-directory-manager-modules/test/univention-admin-test:1
management/univention-join/umc/python/join/__init__.py:1
management/univention-join/univention-run-join-scripts:1
management/univention-join/univention-server-join:1
management/univention-ldap/10univention-ldap-server.inst:5
management/univention-ldap/debian/univention-ldap-server.postinst:1
management/univention-ldap/univention-backup2master:3
services/univention-samba/26univention-samba.inst:1
services/univention-samba/addmachine.sh:1
services/univention-samba4/96univention-samba4.inst:1

Generell sollte das
  grep ^dn: | sed s/dn: // | head -n1
am besten durch folgendes ersetzt werden:
  sed -ne 's/^dn: //p;T;q'

-n: standardmäßig nichts ausgeben
-e: Das nächste Argument ist das Programm
s//: Substitution
p: nach erfolgreicher Substitution Ergebnis ausgeben
T: nach erfogloser Substition zum Programmanfang springen und mit nächster Zeile fortfahen
q: ansonsten (nach erolgreicher Substitution) sed-Programm beenden

Ein Fall für ucslint?