Bug 23189 - univention-policy-result Parameter -W -p
univention-policy-result Parameter -W -p
Status: CLOSED FIXED
Product: UCS
Classification: Unclassified
Component: LDAP
UCS 3.0
Other Linux
: P5 minor (vote)
: UCS 3.0-2
Assigned To: Jürgen Kahrs
Moritz Muehlenhoff
: interim-2
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2011-08-08 15:38 CEST by Janek Walkenhorst
Modified: 2012-07-20 15:24 CEST (History)
3 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):
Max CVSS v3 score:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Janek Walkenhorst univentionstaff 2011-08-08 15:38:57 CEST
univention-policy-result ruft getopt mit den Parametern "-W" und "-p" in der Syntax auf, diese Parameter werden jedoch nicht ausgewertet.

Wenn man u-p-r mit einem dieser Parameter aufruft, erscheint keine Fehlermeldung für den falschen Parameter, sondern nur die usage().
Comment 1 Jürgen Kahrs univentionstaff 2012-06-21 11:00:06 CEST
Das Programm univention-policy-result kann auf folgende Weise getestet werden.

  eval $(ucr shell)
  univention-policy-result -s \
     -D "uid=Administrator,cn=users,$ldap_base"  \
     -w univention "$ldap_hostdn"

Das Programm soll in Zukunft die Optionen "-W" und "-p" auswerten und ordentliche Fehlermeldungen bringen, wenn was nicht stimmt.
Comment 2 Jürgen Kahrs univentionstaff 2012-06-21 14:30:06 CEST
Ich hab beide Optionen implementiert und getestet mit

  univention_policy_result -s -D "uid=Administrator,cn=users,$ldap_base" -W  -p 7389 "$ldap_hostdn" ; echo $?

Fehlende Argumente in Optionen und undefinierte Optionen werden nun auch gemeldet.

Das changelog im Handbuch hab ich im Abschnitt "others" ergänzt.
Comment 3 Moritz Muehlenhoff univentionstaff 2012-07-02 15:45:16 CEST
Die Abfrage des Passworts als Standard-Benutzer mit 

univention-policy-result -D uid=Administrator,cn=users,dc=jmm302,dc=test -W uid=Administrator,cn=users,dc=jmm302,dc=test

funktioniert.

Für -p gibt es aber keine korrekte Fehlerbehandlung: Auf einem System mit Samba 4 kann der 389-Port des S4-LDAP nicht für Policy Result verwendet werden. Gebe ich diesen Port oder einen fiktiven 222-Port ein, bekomme ich folgende Ausgabe anstatt einer Fehlermeldung:

jmm01@master:~$ univention-policy-result -p 222 -D uid=Administrator,cn=users,dc=jmm302,dc=test -W uid=Administrator,cn=users,dc=jmm302,dc=test
Enter LDAP Password: 
Return 1 uid=Administrator,cn=users,dc=jmm302,dc=test
Comment 4 Jürgen Kahrs univentionstaff 2012-07-03 09:08:23 CEST
Ich hab die Fehlermeldung an einer Stelle geändert auf "could not open policy for %s\n\n". An anderer Stelle habe ich eine Meldung eingefügt, wo keine war und an dann gab es noch eine Stelle wo die Meldung nur kam, wenn OUTPUT_VERBOSE war. Durch meine Änderungen sollte nun jeder Fehlerfall als Text gemeldet werden (auch ohne OUTPUT_VERBOSE).

--- tools/univention_policy_result.c    (Revision 33926)
+++ tools/univention_policy_result.c    (Arbeitskopie)
@@ -188,9 +188,7 @@
        dn = argv[argc - 1];
 
        if ((rc = univention_ldap_open(ldap_parameters)) != 0) {
-               if (output == OUTPUT_VERBOSE) {
-                       printf("Return 1 %s\n\n", dn);
-               }
+               fprintf(stderr, "could not open policy for %s\n\n", dn);
                goto err2;
        }
 
@@ -265,8 +263,10 @@
                }
                univention_policy_close(handle);
                rc = 0;
-       } else
+       } else {
                rc = 1;
+               printf("could not open policy\n");
+       }
 err2:
        univention_ldap_close(ldap_parameters);
 err1:

Das von Moritz beschriebene Problem wird nun ordentlich gemeldet:

univention_policy_result -s -D "uid=Administrator,cn=users,$ldap_base" -p 222 -w univention "$ldap_hostdn"  ; echo $?
could not open policy for cn=ucs30-64-backup,cn=dc,cn=computers,dc=jkahrs,dc=dev

1
Comment 5 Philipp Hahn univentionstaff 2012-07-04 08:21:52 CEST
Weil es mir gerade auffällt:

(In reply to comment #4)
> --- tools/univention_policy_result.c    (Revision 33926)
> +++ tools/univention_policy_result.c    (Arbeitskopie)
...
> -                       printf("Return 1 %s\n\n", dn);
...
> +               fprintf(stderr, "could not open policy for %s\n\n", dn);
...
> +               printf("could not open policy\n");

Fehlermeldungen gehören nach stderr, von daher ist die erste Änderung gut, aber bei der 2. Änderung sollte das auch noch umgesetzt werden.
Begründung: univention-policy-result wird von vielen Shell-Skripten (und auch vom Python-Wrapper) aufgerufen, die die Ausgabe von u-p-r parsen. Steht dort plötzlich eine Fehlermeldung statt der erwarteten Ausgabe, können schlimme Dinge™ passieren: <http://de.wikipedia.org/wiki/Ariane_V88>
Comment 6 Jürgen Kahrs univentionstaff 2012-07-04 09:27:51 CEST
Ja, stimmt, hab ich gleich eingebaut und Paket univention-policy neu gebaut für 3.0-2.

-- tools/univention_policy_result.c    (Revision 33948)
+++ tools/univention_policy_result.c    (Arbeitskopie)
@@ -265,7 +265,7 @@
                rc = 0;
        } else {
                rc = 1;
-               printf("could not open policy\n");
+               fprintf(stderr, "could not open policy\n");
        }
 err2:
        univention_ldap_close(ldap_parameters);
Comment 7 Moritz Muehlenhoff univentionstaff 2012-07-05 12:27:27 CEST
Ok, es kommt jetzt eine verständliche Fehlermeldung:

root@master:~# univention-policy-result -p 222 -D uid=Administrator,cn=users,dc=jmm302,dc=test -W uid=Administrator,cn=users,dc=jmm302,dc=test
Enter LDAP Password: 
could not open policy for uid=Administrator,cn=users,dc=jmm302,dc=test

Changelog vorhanden.
Comment 8 Stefan Gohmann univentionstaff 2012-07-20 15:24:33 CEST
UCS 3.0-2 has been released: 
  http://forum.univention.de/viewtopic.php?f=54&t=1905

If this error occurs again, please use "Clone This Bug".