Water reflections on a roof

Blog

SPD AG stimmt für Fusion mit der CDU AG

Bonn ― In einer Sondersitzung der SPD AG haben die Aktionäre heute den Weg für eine Fusion mit dem ehemaligen Konkurrenten, der CDU AG, frei gemacht.

„Das war nur konsequent“, sprach der CEO der SPD AG, Martin Schulz, vor der Presse. „Die Angebotspalette beider Konzerne zeigte schon lange große Überschneidungspunkte und hat sich seitdem immer weiter angenähert. Wir produzieren außerdem schon seit mehreren Jahren in gemeinsamen Fabriken.“

Auch der CEO der CDU AG, Angela Merkel, zeigte sich erfreut. „Hier wächst zusammen, was zusammen gehört. Schon seit Jahren nutzen wir das Know-How der CDU AG, die Marketingfähigkeiten unserer Tochter CSU GmbH und die Arbeitskraft der SPD AG. Und das zu meiner vollen Zufriedenheit! Dieser Schritt war überfällig.“

Der neue Konzern soll den Namen CDU-PD AG tragen. Schulz: „Das ‚S‘ wurde entfernt, weil wir die Produkte, für die dieser Buchstabe einst stand, schon lange nicht mehr in unserem Angebot haben.“

Frau Merkel wird dem neuen Konzern vorstehen. Herr Schulz wird sich ganz um den Abbau der Arbeitsplätze kümmern, die durch Synergieeffekte wegfallen werden. Allerdings seien keine Entlassungen geplant. Schulz ist zuversichtlich, dass die natürliche Fluktuation in dem neuen Konzern völlig ausreichen werde.

Mit einem Einspruch der Kartellbehörden rechnen Schulz und Merkel nicht.

Die Fusion ist innerhalb der SPD AG nicht unumstritten. Insbesondere viele so genannte Zwergaktionäre stemmten sich bis zuletzt dagegen. Sie befürchten, dass nach einer Fusion die traditionellen Produkte der SPD AG endgültig verschwinden werden. „Dabei sehen wir immer noch eine hohe Nachfrage unserer traditioneller Produkte, die von der Konkurrenz nicht bedient wird“, so ein Aktionär auf der Sondersitzung. „Hier wird ein lukrativer Markt einfach liegen gelassen.“

Auch die Börse sieht der Fusion nicht so positiv entgegen. Die Aktienkurse beider Konzerne lagen bereits in der Vergangenheit im deutlichen Minus. Viele Experten glauben, dass die Fusion nicht den erhofften Trendwechsel bringen wird. ◼

NetCologne VoIP einrichten

Seit Februar 2019 bin ich nicht mehr Kunde von NetCologne. Ich lasse den Artikel als Referenz hier stehen, weise aber darauf hin, dass er nicht mehr aktualisiert wird.

Vorab: Wenn möglich, sollte bei einer FritzBox bei den Internet-Zugangsdaten als Internetanbieter "weiterer Internetanbieter" – "NetCologne / NetAachen" ausgewählt werden. Die FritzBox holt sich dann alle Konfigurationsdaten vollautomatisch, inklusive der Konfiguration für die Telefonie. Falls euer Router diese Option nicht anbietet, findet ihr im folgenden Text vielleicht Hilfe.

Seit heute habe ich endlich VDSL, der ADSL-Anschluss mit Splitter und paralleler ISDN-Telefonie gehört damit endgültig der Vergangenheit an.

Leider war die Einrichtung von NetCologne-SIP auf meiner eigenen FritzBox alles andere als einfach, da ich nirgendwo im Internet brauchbare Informationen fand. Nach einigem Experimentieren hat es aber doch geklappt.

Auf der NetCologne-Einstellungsseite kann man sich ein SIP-Passwort generieren lassen und auch gleich die Login-Daten abholen. Das Generieren des Passworts dauert einen Augenblick, also Geduld. Wenn man mehrmals klickt, kann es sein, dass das angezeigte Passwort nicht das Richtige ist. Wenn man mehrere Rufnummern hat, braucht man für jede ein eigenes Passwort.

Für die fiktive Telefonnummer 0221-123456 erzeugt man dann auf der FritzBox eine neue Rufnummer mit folgenden Parametern:

Telefonie-Anbieter:Anderer Anbieter
Rufnummer für die Anmeldung:123456← Die Rufnummer ohne Vorwahl
Interne Rufnummer:123456← Ebenfalls nur die Rufnummer ohne Vorwahl
Benutzername:221123456← SIP-Username wie auf der Einstellungsseite
Kennwort:●●●●●●●●← Das SIP-Passwort von der Einstellungsseite
Registrar:sip.netcologne.de← SIP-Server von der Einstellungsseite
Proxy-Server:sip.netcologne.de← SIP-Server von der Einstellungsseite
STUN-Server:← Leer lassen

Die anderen Parameter lässt man am besten einfach, wie sie sind. Bei mir waren sie nach der automatischen Konfiguration wie folgt:

DTMF-ÜbertragungRTP oder Inband
Rufnummerunterdrückung:CLIR über *31
Rufnummerübermittlung:Deaktiviert← Rufnummer wird trotzdem übermittelt
Rufnummer für die Anmeldung verwenden:← kein Häkchen
Anbieter unterstützt Rückruf bei Besetzt:← kein Häkchen
Paketgröße in Millisekunden:20
Anmeldung immer über eine Internetverbindung:← kein Häkchen
Der Anbieter unterstützt MWI:← kein Häkchen
Der Anbieter unterstützt kein REGISTER-fetch:← Häkchen gesetzt
Anbieter kontaktieren über:nur via IPv4

Bei dem VDSL-Bitstream-Anschluss muss außerdem die VLAN-ID für Internettelefonie auf 7 eingestellt werden. Bei einem VDSL-Anschluss (ohne Bitstream) ist die VLAN-ID für Telefonie offenbar 10 (das kann ich bei mir aber nicht ausprobieren). Welche Anschlussart man hat, steht im Schreiben, das man von NetCologne bekommen hat.

Bei mir hat das so funktioniert. Aber die Werte wurden experimentell ermittelt. Im Zweifelsfall sollte man die NetCologne-Hotline anrufen (wie auch immer man das mit einem nicht funktionierenden Telefonanschluss schaffen möchte).


Nachtrag, 22.08.2017: Für den SIP-Server sollte sip.netcologne.de (oder was bei dir auf der Netcologne-Einstellungsseite steht) verwendet werden. Vorher stand hier im Artikel eine feste IP-Adresse, die aber anscheinend nicht mehr aktuell ist. Danke an Ralph für den Stuppser in die richtige Richtung.


Nachtrag, 12.11.2018: Durch eine Neukonfiguration meiner FritzBox wurden die Telefoniedaten automatisch von NetCologne bezogen. Ich habe die Angaben entsprechend zu dem geändert, was ich danach in meiner FritzBox vorfand.

Miniatur-Wunderland

If you visit Hamburg and have a few hours to spare, make sure to visit the Miniatur Wunderland in the Speicherstadt. It is the world’s largest model railway, covering an area of more than 1,300 m².

The construction easily degrades your home model railway to a few chipboards with rails attached. Besides model trains, also cars and even planes move there. For example, a fire breaks out in a model palace, and the fire trucks are immediately rushing to the place with blaring sirens. The perfection and the love even for tiniest details is just breathtaking.

The next pictures show just a small extract. There is much more to discover. You could easily spend hours, and wouldn’t have seen everything yet. Make sure to reserve your tickets online, to avoid waiting in a long line.

But enough... It’s picture time!

Continue reading...
PHP 5.3.7, eine Analyse

Das PHP-Entwicklerteam veröffentlichte vor wenigen Tagen die Version 5.3.7, nur um schon wenige Tage später vor deren Verwendung zu warnen. Der Grund dafür war ein Fehler in der Funktion crypt(), welche bei bestimmten Hash-Verfahren lediglich das Salt zurückliefert. Das kann dazu führen, dass nach einem Update auf PHP 5.3.7 keine Benutzer sich mehr auf einem Webauftritt einloggen können oder sich bei einer Passwortänderung nach einem Update auf eine spätere PHP-Version nicht mehr einloggen können. In PHP 5.3.8 wurde der Fehler wieder behoben.

Dieser Artikel ist der Versuch einer Analyse, wie es zu dem Fehler kam und warum er erst nach der Release bemerkt wurde.

Die PHP-Funktion crypt() ist in der Datei php_crypt_r.c implementiert. Folgender Codeausschnitt baut dort den Passwort-Hash zusammen:

memcpy(passwd, MD5_MAGIC, MD5_MAGIC_LEN);
strlcpy(passwd + MD5_MAGIC_LEN, sp, sl + 1);
strcat(passwd, "$");

strcat() fügt eine Zeichenkette an das Ende eines Puffers. Die Funktion gilt als unsicher, da sie nicht prüft, ob der Zielpuffer genügend Speicherplatz zur Verfügung stellt. Wird die Zeichenkette zu lang, wird der nachfolgende Speicherbereich beschädigt – ein typisches Problem bei C-Sprachen.

Aus dem Grund wurde der Aufruf durch eine sicherere Funktion ersetzt. Leider ist aber gut gemeint das Gegenteil von gut gemacht.

memcpy(passwd, MD5_MAGIC, MD5_MAGIC_LEN);
strlcpy(passwd + MD5_MAGIC_LEN, sp, sl + 1);
strlcat(passwd, "$", 1);

strlcat() stellt sicher, dass der Puffer nicht über sein Ende hinaus beschrieben wird. Dazu wird dessen Größe übergeben. Und genau hier lag das Problem, denn statt der Größe von passwd wurde anscheinend die Größe des zu kopierenden Textes übergeben, nämlich 1. Da passwd zu dem Zeitpunkt bereits deutlich mehr als ein Zeichen enthält, tut strlcat() genau das, was es tun soll, nämlich gar nichts. Das “$”-Zeichen wird nicht angehängt, das tatsächliche Ergebnis weicht damit von dem gewünschten Ergebnis ab.

Solch ein Fehler ist eigentlich ein Lehrbuchbeispiel für Unit-Tests, und der Kommentar zum Bugfix (Revision 315218) deutet auch an, dass ein solcher existiert:

Unbreak crypt() (fix bug #55439)
# If you want to remove static analyser messages, be my guest,
# but please run unit tests after

Tatsächlich gibt es einen Test, der die crypt()-Funktion mit bestimmten Werten aufruft und das Ergebnis mit einem erwarteten Ergebnis vergleicht. Dieser Test schlägt Alarm, wenn er ausgeführt wird.

Dass PHP 5.3.7 dennoch veröffentlicht wurde, lässt eigentlich nur einen Schluss zu: Der Unit-Test wurde nicht ausgeführt oder der Alarm wurde schlichtweg ignoriert. Spätestens beim Bau der finalen Version unmitelbar vor der Veröffentlichung hätte dies aber stattfinden müssen. Alles andere wäre grob fahrlässig.

Zusammengefasst hatte der Fehler also folgende Ursachen:

  • die für C-Sprachen üblichen Probleme bei der sicheren Verarbeitung von Zeichenketten
  • eine missverständliche oder nicht verstandene Dokumentation der Funktion strlcat()
  • keine verbindlich vorgeschriebene fehlerfreie Ausführung der Unit-Tests vor der Freigabe einer Release

Insbesondere der letzte Punkt wiegt schwer und wirft ein schlechtes Licht auf die verantwortlichen PHP-Entwickler.