PHP – fooled me once again…
I was asked to take a look at several free and opensource software web-projects which are capable for so called “ISP configuration management”, managing web-, mail-, database-servers, etc. – handling clients, resellers and admins and having specialized frontends for them…
Anyway… I trigerred a weird bug in one of the projects where I got into an if-condition where I shouldn’t get into… which not just caused a weird behaviour of the application but was also a big security hole in this special case.
The code was something like that (simplified and not tested):
get_sql($value) {
if ($ret = mysql_query ("SELECT * FROM `table` WHERE foo='%s'"),
mysql_real_escape_string($value))
{
return $ret;
}
else
{
return false;
}
}
$result = get_sql($foo);
if (count($result) > 0) {
// privileged area...
}
Ugly code – anyway… how it was expected to behave by the author?
1) function get_sql() gets executed and therefore a sql-query
2) get_sql() returns an array of results
3) the number of results is checked via count($result) and when the result-array is greater than 0 jump into the if-block
Okay, so far so good…
However – I finally found out the SQL-query in get_sql() fails because of a typo.
No error was thrown in the above code – so what’s happening?
1) function get_sql() gets executed and therefore a sql-query
2) get_sql() returns the boolean false, because the sql-query failed
3) count($result), evaluated count(false) is called
As the software just did behave different and didn’t throw an error an intermediate result is:
count() applied on a boolean is valid !
So what’s count(false) going to return?
1! – the integer one!
count(false) is 1 and in PHP therefore true!
Proof:
$ php
<? echo count(false); ?>
1
$
Even better: this behaviour is kind of “documented” within an example at http://php.net/manual/en/function.count.php without any comment.
Okay, now guess:
What’s count(true) returning? And this is not documented!
1! – the integer one!
PHP – dine in hell…
some updates of what’s going on :)
Besides the ongoing work related to the Openmoko Freerunner <-> OpenWrt integration, I decided to focus on multimedia application ports for OpenWrt.
The Xbox Multimedia Center (xbmc -> http://www.xbmc.org), which I’m using (and lovin’) for several years on my Xbox now, was starting getting ported to Linux quite some time ago.
The port looks really promising, so I decided to start get it working within OpenWrt.
I already started porting some basic needed dependencies, including <(lib)boost> (http://www.boost.org), a apparently widely used c++ library set.
Because this project – ehrm – really resists all normal tries getting cross-compiled and staged (it does use an alternative to make called <bjam> which is better because of… – I really have no clue), I took a look how the OpenEmbedded-project got it done – and it helped! – technically as well as morally.
Besides giving me some hints how to workaround some of their (really weird) stuff, I “discovered” a comment in the middle of the file (http://cgit.openembedded.net/cgit.cgi?url=openembedded/tree/recipes/boost/boost.inc) which I like to quote:
[..]
80 # Oh yippee, a new build system, it’s sooo cooool I could eat my own
81 # foot. inlining=on lets the compiler choose, I think. At least this
82 # stuff is documented…
83 # NOTE: if you leave on then in a debug build the build sys
84 # objcopy will be invoked, and that won’t work. Building debug apparently
85 # requires hacking gcc-tools.jam
86 #
87 # Sometimes I wake up screaming. Famous figures are gathered in the nightmare,
88 # Steve Bourne, Larry Wall, the whole of the ANSI C committee. They’re just
89 # standing there, waiting, but the truely terrifying thing is what they carry
90 # in their hands. At first sight each seems to bear the same thing, but it is
91 # not so for the forms in their grasp are ever so slightly different one from
92 # the other. Each is twisted in some grotesque way from the other to make each
93 # an unspeakable perversion impossible to perceive without the onset of madness.
94 # True insanity awaits anyone who perceives all of these horrors together.
95 #
96 # Quotation marks, there might be an easier way to do this, but I can’t find
97 # it. The problem is that the user.hpp configuration file must receive a
98 # pre-processor macro defined as the appropriate string – complete with “‘s
99 # around it. (<> is a possibility here but the danger to that is that the
100 # failure case interprets the < and > as shell redirections, creating
101 # random files in the source tree.)
[..]
Reading this really made my day
Anyway – boost is ported and working on OpenWrt now, but that’s only the head of the list of dependencies for getting xbmc compiled and running -
any help here – packaging requirements for xbmc for OpenWrt – is highly appreciated!
nerds ‘r cookin’…
Still at fosdem, still hearing really good talks and still meeting nice people.
So right now just a little insight (how we’re surviving)
:
Lang ists her…
…seid dem letzte Post.
Doch das wird nachgeholt. Es haben sich mehrere Projekte angesammelt, welche ich in den nächsten Tagen vorstellen werde.
Derzeit bin ich im Pseudo-Abi-Stress – Anlass für diesen Post gab mir folgende SMS von o2 (ja, ich habe nun einen Vertrag – nein, nicht auf meinen Namen und nein, nicht auf den Namen von Eltern oder anderen Verwandten
):
“Sie haben das o2 Communication Center seit dem 1.1.1900 nicht mehr benutzt und der E-Mail Empfang wurde deaktiviert. Wenn Sie das o2 Communication Center bis zum 28.9.1900 nicht weiter nutzen wird Ihr Konto automatisch gelöscht.
Sind Sie mit dem Produkt nicht zufrieden oder haben Sie Verbesserungsvorschläge? Wir freuen uns auf Ihr Feedback unter http://www.o2online.de/goto/mc-feedback.”
1900 – JAWOLL!
Probesitzen
Dieses Bild soll einen Nachtrag zu einem derzeit nicht nicht vorhanden Beitrag über die IFA darstellen:
Langsam gehen die zu weit…
o2 – geht’s noch ?! (3)
Das mit dem Platzhalter unten war ‘ne doofe Idee.
Habe es nun endlich geschafft den Brief online zu stellen – hier ist er:
http://www.nanl.de/briefe/o2-2.pdf
Das war nur noch ein Trotzbrief quasi, da ich es ziemlich beschissen finde was die da abziehen.
Habe heute die Antwort erhalten – ein weiteres Mal: ohne Worte:
“Sehr geehrter Herr Vogt,
vielen Dank für Ihr Schreiben.
Wir haben Ihren Eintrag geprüft und sind zum Ergebnis gekommen, dass wir ihn nicht annehmen. Hierzu sind wir im Rahmen der Vertragsfreiheit berechtigt.
Wir bitten um Ihr Verständnis.
Mit freundlichen Grüßen
Ihr Team von o2 Germany”
Musterung
Es ist jetzt 8:48.
Um 10:00 Uhr soll ich in der Oberspreestr. zur Musterung erscheinen.
Wünscht mir Glück
—-
Bin wieder zurück – das Tageziel ist erreicht: T5 !!!!
Ausführlicher Report findet in ca. 2 Wochen statt – dann werden die über mich gespeicherten Daten bei denen (laut denen) vernichtet.
Beschwerdebrief an Kaba
Mich hat mal wieder meine kreative Ader gepackt, als ich bei einem sehr guten Freund zum Frühstück eine Kaba-Milchpulver-Packung auf dem Tisch fand und mir den Comic auf der Rückseite ansah…
Sehr geehrtes Kaba-Team,
Ich habe bereits Dutzende von Kaba-Produkten erworben, jedoch keines verhalf mir bisher
in den auf der Rückseite jedes Kaba-Produktes beschriebenen Kaba-Strudel zu gelangen. Ich
habe sämtliche Geschmacksrichtungen durchprobiert und auch schon versucht das gesamte
Pulver einer Packung so zu essen. Danach wurde mir zwar schwindlig und schlecht, jedoch
sehe ich hier wenig Parallelen zum auf den Produkten beschriebenen Strudel.
Ich bin verzweifelt und weiß wirklich nicht mehr weiter.
Ich bitte um eine schnellstmögliche Rückmeldung.
Mit freundlichen Grüßen
Mirko Vogt
Mal gucken was zurück kommt
o2 – geht’s noch ?! (2)
Ich habe soeben einen Brief im Briefkasten gefunden – die Absenderadresse war o2.
Ohne weitere Worte der Brief hier zitiert:
“Sehr geehrter Herr Vogt,
vielen Dank für Ihr Schreiben.
Wir haben Ihre Daten eingehend geprüft und müssen Ihnen leider mitteilen, dass wir gemäß unserer internen Geschäftskriterien Ihrem Auftrag leider nicht entsprechen können.
Bedauerlicherweise konnten wir uns nicht anders entscheiden. Bitten haben Sie hierfür Verständnis.
Mit freundlichen Grüßen
Ihr Team von o2 Germany”
ernüchternd
o2 – geht’s noch ?!
Ich entschloss mich am 09.07.06 einen o2-Vertrag abzuschließen, jedoch nicht einem regulärem o2-Shop sondern bei einem Reseller, auf dessen Angebot ich durch eBay gestoßen bin (http://cgi.ebay.de/[...]&item=190005590904[...]). Die in den Bewertungskommentaren hochgelobte extrem schnelle Lieferzeit, die 100% positiven Bewertungen sowie der Gerätepreis haben mich überzeugt.
In einem regulären o2-Shop müsste ich ~150 Euro zusätzlich zu dem o2-Genion-Vertrag bezahlen, hier nur 30 Euro. Dies ist keine Abzocke oder gar Beschiss, solche Reseller haben mit den Providern (hier o2) Verträge, welche z.B. besagen, dass wenn ein Reseller in einem Monat 1000 Verträge abschließt, er pro Vertrag eine Prämie von o2 bekommt, bei welcher es sich für den Reseller immernoch lohnt diese an den Kunden in Form von z.B. niedrigeren Gerätepreisen weiterzugeben um das ANgebot schmackhafter zu machen und dadurch wiederum mehr Verträge abzuschließen. Dies hat aber nichts mit der eigentlich Sache zu tun, denn dies war kein Reseller wie Mobilcom, Debitel, etc., welche eigene Verträge mit den Providern haben, sondern ich habe von meinem Reseller einen originalen o2-Vertrag bekommen, welchen ich dem Reseller geschickt habe, dieser leitet diesen weiter an o2 und bekommt entweder ein “angenommen” oder “abgelehnt”.
In meinem Fall hat o2 diesen Vertrag abgelehnt.
Warum?
Keine Ahnung.
Von meinem Reseller erhielt ich nur folgende E-Mail:
Sehr geehrter Herr Vogt,
leider müssen wir Ihnen mitteilen, daß Ihr
Vertrag von O2 erneut abgelehnt wurde.
Gründe dafür sind uns nicht bekannt.
Es tut uns leid, Ihnen keine andere Auskunft geben zu
können.
Das mir mein Reseller keine weitere Auskunft geben kann ist im Sinne des Datenschutzes korrekt – wäre ja schlimm, wenn o2 z.B. die von der SCHUFA erhaltenen Daten, wie z.B. Kontoüberziehungen, Kredite, etc. einfach weitergeben dürfte.
Dennoch habe ich bei meinem Reseller angerufen, um mich zu informieren wie denn jetzt weiter verfahren wird.
Sie hätten an diesem Tag bereits einen anderen solchen Fall gehabt, in welchen der Vertrag ebenso wie bei mir abgelehnt wurde.
Dieser Kunde habe dann bei der o2-Hotline angerufen und die Sache geklärt, sodass letzendlich ein Vertrag doch genehmigt werden konnte.
Klein-Mirko hat sich also die o2-Hotline-Nr. geben lassen und dort angerufen. Diese sah aber gar nicht ein mir irgendwelche Informationen zukommen zu lassen zu diesem Thema. Auch ein Nachhaken, dass doch bereits an diesem Tag ein anderer Kunde auch schon Auskunft erhalten habe (diese Information hatte ich von meinem Reseller) brachte nichts.
Also ich nochmal meinen Reseller angerufen, welcher mir sagte, dass man leider bei der o2-Hotline ziemlich hartnäckig an die Sache herangehen und auch mal forsch nachhaken muss.
Wieder bei der o2-Hotline angerufen, ich hatte natürlich das große Glück die selbe o2-Mitarbeiterun am Telefon zu erwischen wie bereits ein paar Minuten zuvor, und noch einmal nachgehakt.
Sie schon leicht genervt ich müsse einen schriftlichen Postbrief an die o2-Kundenbetreuung schicken. Nach ein bisschen hin und her war ich auch nicht schlauer. Einen Postbrief? Die Arbeit und das Porto sah ich hier noch nicht ein ausgeben zu müssen, da sie keinen Grund hatten mich abzulehnen.
Da die Telefonate mir alles andere als geholfen haben, dachte ich wäre vielleicht ein “direkter Kontakt” mit den o2-Menschen ganz hilfreich.
Da dies ja ein originaler o2-Vertrag war und ich mir glücklicherweise diesen kopierte bevor ich ihn meinem Reseller zuschickte, machte ich mich auf den Weg in meinen o2-Shop meines Vertrauens.
Die Dame dort hatte aber nicht wirklich Lust sich mit meinem Problem zu befassen, hat aber auf meine Bitte hin den Vertrag noch einmal begutachtet und meinte den dort im Shop noch einmal manuell eingeben zu können. Jedoch habe ich ja meinen Vertrag nicht umsonst via eBay verabschieden wollen und deswegen hätte ich so die 149 Euro zusätzlich für das Mobiltelefon bezahlen müssen. Als ich ihr das sagte wäre sie bereit gewesen auf 99 Euro Gerätepreis runterzugehen (interessant wie kulant die mit den Gerätepreisen doch sind – 50 Euro weniger – handeln im o2-Shop könnte sich also doch lohnen), jedoch wären das immernoch 69 Euro Differenz gewesen (zum Vergleich nochmal, Gerätepreis im eBay-Angebot war 30 Euro) und ich war der Meinung, dass dies auch keinen Unterschied gemacht hätte, da ein o2-Vertrag ja ein o2-Vertrag sei.
Sie konnte keinen Fehler feststellen aber mir natürlich auch keine Auskunft erteilen, sondern nur den Tipp geben, den Vertrag mit dem Vermerk diesen doch bitte manuell zu bearbeiten um Verwechslungen auszuschließen nochmals bei o2 einzureichen.
Ich rufe also meinen Reseller an und bitte ihn den Vorschlag der o2-Tante zu befolgen, was er auch machte -> abgelehnt ein 2. und 3. Mal.
OK, ich rufe nochmal bei der o2-Hotline an und versuche der (diesmal einer anderen) Dame zu verklickern, dass ich endlich wissen will, WARUM nun mein Vertrag abgelehnt wurde – mir ging es nicht mal um den Vertrag – ich habe keine negativen SCHUFA-Einträge, niemals einen Mobilfunkvertrag gehabt und auch keine Kredite oder Miese auf meinem Konto. Folglich kommt der Verdacht, dass o2 evtl. mit schwarzen Listen arbeitet und hier der Fehler (die Verwechslung?) liegt.
Auf jeden Fall fiel der Dame nix besseres ein als mir zu sagen, dass dies “o2-interne Gründe” habe, o2 mich “als Kunden einfach nicht haben möchte” und ich “die Gründe niemals zu Gesicht bekommen” werde.
Ich war wirklich perplex.
Auf jeden Fall gab sie mir noch eine Fax-Nr. wo ich mein Glück versuchen könnte, auch wenn sie nicht daran glaubt, da diese Daten nirgendwo gespeichert werden (ahja!) – ich werde auf mein Fax aber in jedem Fall eine Antwort erhalten.
Das PDF welches ich faxte habe ich leider nicht mehr, diente mir aber als Vorlage für unten veröffentlichen weiteren Brief welcher im Prinzip das Selbe aussagt.
Es folgte natürlich keine Antwort aber dafür ein weiterer Gang in den o2-Shop, wo ich einem vermeintlich kompetenten Mitarbeiter begegnete.
Als ich ihm erzählte, was mir die o2-Hotline schönes erzählte, o2 keinen Grund habe mich abzulehnen (wegen o.g. Gründe) und ich auch nicht bereit bin 20 Euro SCHUFA-Auskunft zu zahlen nur um zu erfahren, dass o2 da Scheiße reingeschrieben hat, war er bereit einen Brief zu verfassen in welchem er mit schickem o2-Stempel in meinem Namen um Auskunft bittet.
Nach einem DIN-A4 handschriftlich verfassten Brief wollte er noch meinen Personalausweis und meine Bank-Karte kopieren und beilegen (scheint so üblich zu sein – mein Reseller wollte auch Kopien von beidem) und fand den vermeintlichen Fehler mit einem kurzen Blick auf meine Bankkarte.
“Dies ist ein Jugendkonto!” zerknüllt den eben geschriebenen Brief und erklärt mir, dass er schon öfters Probleme mit Jugendkonten hatte, da hier z.B. auch keine Einzugsermächtigungen möglich sind. Ich solle also ein neues Konto eröffnen.
Tatsächlich habe ich das Konto vor mehreren Jahren eröffnet, als ich noch minderjährig war. Ich verdrängte einfach mal die schon auf meinem Konto laufenden Einzugsermächtigungen und machte mich am nächsten Tag auf zur Postbank wieder mit dem Ziel vor Augen doch noch mein Handy+Vertrag zu bekommen, jedoch erhielt ich dort eine weitere vernichtendende Aussage: “Dies ist ein vollwertiges Girokonto mit keinerlei Einschränkungen”. Laut Postbankmitarbeiter war schon immer der Kontoinhaber und zum Zeitpunkt als ich volljährig wurde, wurde die Vollmacht über das Konto von meinen Eltern auf mich automatisch übertragen.
So langsam fühlte ich mich wirklich verarscht. Ich renne nochmals in den o2-Shop und sehe die Dame wieder mit der ich das erste Mal das Vergnügen hatte. Sie war nicht wirklich begeistert, als ich sie bat den Brief den ihr vermeintlich kompetenter Mitarbeiter zuvor geschrieben und danach zerknüllt hatte nochmals zu schreiben, mit schickem o2-Stempel zu versehen und nochmals denen zu faxen.
Das tat sie, wenn auch etwas widerwillig, dann auch und drückte mir das Original in die Hand mit dem Vermerk, dass sicherheitshalber dann vielleicht doch noch per Postbrief an die Kundenbetreuung zu schicken.
Erwähnen könnte man evtl. auch noch, dass während unseres Gespräches der “vermeintlich kompetente” Mitarbeiter strahlend auf mich zuging und mich höflich fragte, ob ich denn schon ein neues Konto eröffnet habe – grml.
Ich schickte den von der o2-Mitarbeiterin handschriftlich verfassten Brief zusammen mit diesem (http://www.nanl.de/briefe/o2.pdf) von mir nochmals “in schön” geschriebenen Brief, welcher im Prinzip die Problematik nochmals etwas ausführlicher beschreibt zusammen mit jeweils Kopien meines Personalausweises und meiner Bankkarte.
Das war Montag, dem 17. Juli 2006 – eine Antwort habe ich bisher noch nicht erhalten.
Ich werde mich wahrscheinlich in den nächsten Tag an den Datenschutz wenden, da hier meiner Meinung nach o2 verpflichtet ist mir die Gründe zu nennen und sich zudem der Verdacht erhärtet, dass o2 intern schwarze Listen führt.

