Yahoo is not using valid PNG files in Yahoo Messenger for buddy icons.

I was amazed to discover that buddy icons (png files) from Yahoo Messenger are not passing PNG tests and to render bad in mod programs including in Windows XP, Microsoft Paint, and others. In fact the only place where I was able to see the files well was Pidgin messenger (GTK) – a multi-network messenger I would really recommend to anyone. I’ve even make a feature request to them to recompress the png files in order to eliminate this yahoo created problem.I wouldn’t recommend the usage of Yahoo Messenger to anyone because I consider it’s one of the most bloated piece of software. I would even give it a #1 position in annoyware software products. Still most people around me keep using it, maybe they are all masochists ;)

You may wonder why I’m interested about the buddy icons. I save them as contact icons in Outlook and synchronize them with my iPhone in order to have a picture for every contact.

First time, I suspected that the bug is inside Windows XP code because I wasn’t able to reproduce it on Vista so I’ve filled a bug at Microsoft. I was surprised to get a fast response and well documented, written in my native language (Romanian) – the conclusion the bug is not at them.

Here are some results of my investigations:

  • reproducing on Windows XP SP3 (and SP2) (3 tests)
  • did not reproduce on Vista (1 test)
  • garbage on: Explorer, Windows Picture and Fax Viewer, Paint, Paint.NET
  • different garbage on Outlook 2007 (partial load)
  • loads ok on: Internet Explorer, Firefox, Adobe Photoshop, Gimp

The above PNG files are available for download: xp_png_rendering_bug_files

I’ve run the pngcheck utility on all files from C:\Program Files\Yahoo!\Messenger\Cache\Icon\ The results are below:


OK: 1BA5271FDE68D1E29C94736867C7FCE (96x96, 32-bit RGB+alpha, non-interlaced, 50.1%).
2517D58A367E9AD7E34D97D81A89126 zlib: inflate error = -3 (data error)
ERROR: 2517D58A367E9AD7E34D97D81A89126
OK: 2F2DAD93E92CF24DFDAC3477354E0B3 (96x96, 24-bit RGB, non-interlaced, 98.1%).
OK: 2F76CE45D21E4F2DCACC9DAB7771CCAE (96x96, 24-bit RGB, non-interlaced, 88.1%).
324991D224071D89CE21A5C67F287AA zlib: inflate error = -3 (data error)
ERROR: 324991D224071D89CE21A5C67F287AA
38EAC9B6564D3398AD1214EA7B89014 zlib: inflate error = -3 (data error)
ERROR: 38EAC9B6564D3398AD1214EA7B89014
OK: 482B65B54B746615F6312B512A57F611 (96x96, 24-bit RGB, non-interlaced, 21.6%).
4F6D8712BE6BBA8B522648A065AAB8D5 zlib: inflate error = -3 (data error)
ERROR: 4F6D8712BE6BBA8B522648A065AAB8D5
5825A359D7E5C85F3BCD268D238A358 zlib: inflate error = -3 (data error)
ERROR: 5825A359D7E5C85F3BCD268D238A358
60B345DBB55CDB53AD56F50F49CC9F zlib: inflate error = -3 (data error)
ERROR: 60B345DBB55CDB53AD56F50F49CC9F
63CD7FE0B2334C79D535B6BC6453B69F zlib: inflate error = -3 (data error)
ERROR: 63CD7FE0B2334C79D535B6BC6453B69F
6827B456EDCBEF38B2AB658410AC88B8 zlib: inflate error = -3 (data error)
ERROR: 6827B456EDCBEF38B2AB658410AC88B8
OK: 7111FB3485F9326D935B5CD247151 (96x96, 24-bit RGB, non-interlaced, 27.0%).
7121E5314CC81D1843987419456F367 zlib: inflate error = -3 (data error)
ERROR: 7121E5314CC81D1843987419456F367
A3C20657EE6BA3632CB9511DB73C112 zlib: inflate error = -3 (data error)
ERROR: A3C20657EE6BA3632CB9511DB73C112
A8F5AA39DF6DECC0EF7889FA9119B zlib: inflate error = -3 (data error)
ERROR: A8F5AA39DF6DECC0EF7889FA9119B
AB88745E3DE17EC8FFCA427ADFEB5 zlib: inflate error = -3 (data error)
ERROR: AB88745E3DE17EC8FFCA427ADFEB5
AC1BD51EA3C4C4E33BC7CAB570FE89 zlib: inflate error = -3 (data error)
ERROR: AC1BD51EA3C4C4E33BC7CAB570FE89
C1B8D2AEF4322DBB5B6E1A38375B34 zlib: inflate error = -3 (data error)
ERROR: C1B8D2AEF4322DBB5B6E1A38375B34
C2D6D7FCA95CA272582CF4E39CE98D5 zlib: inflate error = -3 (data error)
ERROR: C2D6D7FCA95CA272582CF4E39CE98D5
OK: CBDAE9CEC4B694AD449960C1C1B427 (96x72, 24-bit RGB, non-interlaced, 27.8%).
D599D01D1AB7547EF179DB5E45753DF5 zlib: inflate error = -3 (data error)
ERROR: D599D01D1AB7547EF179DB5E45753DF5
OK: D64DC7F946B8D664C5BA1FAE9D228CA (60x60, 24-bit RGB, non-interlaced, 29.6%).
DB299D16BDEB2A8C8A5BDBEDD65597C5 zlib: inflate error = -3 (data error)
ERROR: DB299D16BDEB2A8C8A5BDBEDD65597C5
OK: F0AF65BABF10ACF86A3C5276EE52A5A0 (96x96, 24-bit RGB, non-interlaced, 53.4%).

Errors were detected in 17 of the 25 files tested.
No errors were detected in 8 of the 25 files tested.

So it’s clearly a bug in Yahoo Messenger and I wasn’t able to find a bug tracker or a bug submit form on the web. The only way we could make them solve this issue is to create bug reports directly from YM using menu Help > Report a problem to Yahoo! (choose Other/Display images).

Tags: , , , , ,

Thursday, December 25th, 2008 software

3 Comments to Yahoo is not using valid PNG files in Yahoo Messenger for buddy icons.

  1. Interesant.
    Nu se reproduce însă pentru xp_png_bug_5.png: nu se vede bine în niciuna dintre aplicaţii (IE, Firefox, GIMP)

  2. ionuţ on August 31st, 2008
  3. Totuşi tind să cred ca bug-ul este în Pidgin mai ales că am descoperit http://www.libpng.org/pub/png/apps/pngcheck.html care pentru majoritatea cazurilor prezentate raportează erori.

    PS. Chiar am fost plăcut impresionat de asistenţa tehnică de la Microsoft, oferită în româneşte şi cu timp de răspuns bun.

  4. sorin on September 4th, 2008
  5. la png-urile alea sunt executabile care ti le repara (png-fix-IDAT-windowsize.exe), sau daca le downloadezi poti sa le rescrii byte-ul 42 si 43 sa pui in loc de 0×38 si 0×8D (int 56 si 141) sa pui 0×78 si 0×9C (int 120 si 156) si se rezolva. Executabilul de reparat png-uri e in acelasi loc de unde ai luat pngcheck in directorul gpl. Dar ti-am zis exe-ul acela de fapt face ce ti-am zis mai inainte. Efectiv e vorba de 2 biti dupa IDAT.

  6. alex on October 28th, 2009

Leave a comment

Notice

Recently I moved all my articles related to internationalization to blog.i18n.ro

Language