Perl Warnings aus externem Code unterdrücken

Begonnen von Markus M., 16 Juni 2017, 19:18:21

Vorheriges Thema - Nächstes Thema

Markus M.

Hat jemand eine Idee, wie ich Perl Warnings aus externen Perl Modulen unterdrücken kann?
Crypt::Rijndael_PP benutze ich im Xiaomi Modul als Fallback zu AES.
Es funktioniert alles, leider bekomme ich bei jedem Aufruf folgende Meldung:

2017.06.16 13:55:32 1: PERL WARNING: Crypt::Rijndael_PP: set keysize to 128.
2017.06.16 13:55:32 1: stacktrace:
2017.06.16 13:55:32 1:     main::__ANON__                      called by /usr/local/share/perl/5.22.1/Crypt/Rijndael_PP.pm (2358)
2017.06.16 13:55:32 1:     Crypt::Rijndael_PP::new             called by /usr/share/perl5/Crypt/CBC.pm (385)
2017.06.16 13:55:32 1:     Crypt::CBC::_generate_iv_and_cipher_from_options called by /usr/share/perl5/Crypt/CBC.pm (224)
2017.06.16 13:55:32 1:     Crypt::CBC::crypt                   called by /usr/share/perl5/Crypt/CBC.pm (177)
2017.06.16 13:55:32 1:     Crypt::CBC::encrypt                 called by /usr/share/perl5/Crypt/CBC.pm (192)
2017.06.16 13:55:32 1:     Crypt::CBC::encrypt_hex             called by /opt/fhem/FHEM/72_XiaomiDevice.pm (1028)
2017.06.16 13:55:32 1:     main::XiaomiDevice_WriteJSON        called by /opt/fhem/FHEM/72_XiaomiDevice.pm (227)
2017.06.16 13:55:32 1:     main::XiaomiDevice_Get              called by /opt/fhem/fhem.pl (3412)
2017.06.16 13:55:32 1:     main::CallFn                        called by /opt/fhem/fhem.pl (1794)
2017.06.16 13:55:32 1:     main::CommandGet                    called by /opt/fhem/fhem.pl (1157)
2017.06.16 13:55:32 1:     main::AnalyzeCommand                called by /opt/fhem/FHEM/01_FHEMWEB.pm (2466)
2017.06.16 13:55:32 1:     main::FW_fC                         called by /opt/fhem/FHEM/01_FHEMWEB.pm (858)
2017.06.16 13:55:32 1:     main::FW_answerCall                 called by /opt/fhem/FHEM/01_FHEMWEB.pm (547)
2017.06.16 13:55:32 1:     main::FW_Read                       called by /opt/fhem/fhem.pl (3412)
2017.06.16 13:55:32 1:     main::CallFn                        called by /opt/fhem/fhem.pl (686)


Wie kann ich diese eine Warnmeldung gezielt unterdrücken?
Klapppt das überhaupt?
Google hat "no warnings" vor dem Aufruf ausgespuckt, damit hatte ich allerdings keinen Erfolg.

Gruss, Markus
FHEM dev + HomeBridge + Lenovo Flex15 + HM-CFG-USB + RFXtrx433 + Fritz!Box 7590/7580/546E

HM Aktor/Sensor/Winmatic/Keymatic/Thermostat, HUE, Netatmo Weather/Security/Heating, Xiaomi AirPurifier/Vacuum, Withings Aura/BPM/Cardio/Go/Pulse/Thermo, VSX828, Harmony, Siro ERB15LE
https://paypal.me/mm0

betateilchen

In der Doku zu Crypt::Rijndael_PP steht doch klipp und klar:

Zitat
DESCRIPTION

This modules shares the OO style interface with Crypt::Rijndael from Rafael R. Sevilla.

Supported modes: Electronic CodeBook (MODE_ECB) and Cipher Block Chaining (MODE_CBC). Please use Crypt::CBC for CBC-Mode, as my CBC is not compatible with neither Crypt::CBC nor Crypt::Rijndael and it is subject to change in the near future. When using Crypt::CBC this module is 100% compatible to Crypt::Rijndael and you can decrypt and encrypt your data with both modules!
Supported keysizes: 128, 192 and 256 (default)
Supported blocksizes: 128 (default), 192 and 256
If the size of the key does not match the given keysize then the key is padded with "0" (hex) or truncated to the right size.

The last data block is padded with "\0" if it does not match a multiple of the blocksize.

Warnings a raised in both cases.


Also wenn die korrekte Schlüssellänge verwendet wird, sollte es auch keine Warnung geben.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Markus M.

Gelöst durch
$Crypt::Rijndael_PP::DEFAULT_KEYSIZE = 128;
Völlig bescheuerte Implementation in Rijndael_PP, da keysize bereits explizit bei der CBC Definition angegeben wurde.
Supported und Warning passen m.E. nicht zusammen.

Wie ich sowas im Zweifelsfall einfach unterdrückt bekomme, wüsste ich trozdem gerne noch :)
FHEM dev + HomeBridge + Lenovo Flex15 + HM-CFG-USB + RFXtrx433 + Fritz!Box 7590/7580/546E

HM Aktor/Sensor/Winmatic/Keymatic/Thermostat, HUE, Netatmo Weather/Security/Heating, Xiaomi AirPurifier/Vacuum, Withings Aura/BPM/Cardio/Go/Pulse/Thermo, VSX828, Harmony, Siro ERB15LE
https://paypal.me/mm0

betateilchen

Zitat von: Markus M. am 16 Juni 2017, 23:42:24
Wie ich sowas im Zweifelsfall einfach unterdrückt bekomme, wüsste ich trozdem gerne noch :)

Wenn die Warnung nicht aus Deinem eigenen Code kommt: gar nicht.

Wenn Du Dir Dein stacktrace anschaust, siehst Du die Kette der Module bis zur Ausgabe der Warnung. Ein "no warning" würde nur wirken, wenn es in dem Modul stünde, das die Meldung ausgibt. Das kannst Du nicht einfach "übersteuern".

Normalerweise wird die Warnung auf stdout ausgegeben. Da FHEM sich diese Meldungen ins Logfile einverleibt, tauchen sie eben auch dort auf.

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Markus Bloch

Ich hätte jetzt aufgrund der Erklärung, die betateilchen aufgetan hat, den Key vorab auf die richtige Länge gestutzt bzw. erweitert, sodass sich Crypt::Rijndael garnicht erst beschweren kann.

Gruß
Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

Markus M.

Zitat von: Markus Bloch am 17 Juni 2017, 10:14:43Ich hätte jetzt aufgrund der Erklärung, die betateilchen aufgetan hat, den Key vorab auf die richtige Länge gestutzt bzw. erweitert, sodass sich Crypt::Rijndael garnicht erst beschweren kann.

Die Keylänge passt ja und es funktioniert auch alles.
Das Problem ist, dass Crypt::Rijndael_PP schon meckert, wenn eine gültige Keylänge verwendet wird, die nicht dem mehr oder weniger hart verdrahteten Defaultwert entspricht.
FHEM dev + HomeBridge + Lenovo Flex15 + HM-CFG-USB + RFXtrx433 + Fritz!Box 7590/7580/546E

HM Aktor/Sensor/Winmatic/Keymatic/Thermostat, HUE, Netatmo Weather/Security/Heating, Xiaomi AirPurifier/Vacuum, Withings Aura/BPM/Cardio/Go/Pulse/Thermo, VSX828, Harmony, Siro ERB15LE
https://paypal.me/mm0