ZuneGate '08: what really happened!

Microsoft botched the code in the firmware for its Zune 30GB handheld players.

Here's the deal. Microsoft botched the code in the firmware for its Zune 30GB handheld players. Like a ticking time bomb, the problem started exploding for Zune owners once 2008 started transitioning into 2009. Users worldwide quickly found that their Zunes were completely locked out. Locked out as in "completely inoperable," that is: Zunes began resetting without warning or completely turning off. When a user flipped the power back on, the Zune operating system would begin to load and freeze on the actual loading screen. And no amount of begging, pleading, or cursing could fix the issue for a hapless user.

Microsoft was quick on the "solution," which I've paraphrased thusly: Wait it out. Not the best response I can think of, even though it did end up working in the end. But two larger questions remain. How did this happen in the first place, and what other unpleasant code lurks within the Zune OS? I unfortunately don't have much of an answer for the latter, but AeroXperience's own Bryant Zadegan dug deep into the code to find the Achilles' Heel that took the Zunes out of commission. You can check out the full source code right here if you want to take a look at the big picture in a more readable fashion than this blog post can provide. We've snipped down to the problem area shown below:

----------------------------------

#define ORIGINYEAR 1980

BOOL ConvertDays(UINT32 days, SYSTEMTIME* lpTime)

{

int dayofweek, month, year;

UINT8 *month_tab;

//Calculate current day of the week

dayofweek = GetDayOfWeek(days);

year = ORIGINYEAR;

while (days > 365)

{

if (IsLeapYear(year))

{

if (days > 366)

{

days -= 366;

year += 1;

}

}

else

{

days -= 365;

year += 1;

}

}

----------------------------------

For all the non-coders out there, here's what happened. According to Zadegan, the code is designed to calculate out the year by looking at the number of days that has elapsed since a predefined ORIGINYEAR of January 1, 1980. The operating system keeps on subtracting 365 days (or 366, in the case of a leap year) from the total number of days, adding one to the year value, until it can no longer do so--thus makes the correct year.

If you're sharp, you will have noticed the single botched element in the code. On a leap year, there are 366 days in a year. December 31 is the 366th day of the year. The amount 366 is greater than 365, but it is not greater than 366. What happens then? The loop cycles back to the beginning to check the 366-day amount that's remaining. It's greater than 365 days, passing through that line of code. It's not greater than 366 days, so nothing happens. The amount loops back through the code, and loops back through the code, and...

Join the newsletter!

Error: Please check your email address.
Rocket to Success - Your 10 Tips for Smarter ERP System Selection

Tags Microsoftprogramming

Keep up with the latest tech news, reviews and previews by subscribing to the Good Gear Guide newsletter.

David Murphy

PC World (US online)
Show Comments

Cool Tech

SanDisk MicroSDXC™ for Nintendo® Switch™

Learn more >

Breitling Superocean Heritage Chronographe 44

Learn more >

Toys for Boys

Family Friendly

Panasonic 4K UHD Blu-Ray Player and Full HD Recorder with Netflix - UBT1GL-K

Learn more >

Stocking Stuffer

Razer DeathAdder Expert Ergonomic Gaming Mouse

Learn more >

Christmas Gift Guide

Click for more ›

Most Popular Reviews

Latest Articles

Resources

PCW Evaluation Team

Edwina Hargreaves

WD My Cloud Home

I would recommend this device for families and small businesses who want one safe place to store all their important digital content and a way to easily share it with friends, family, business partners, or customers.

Walid Mikhael

Brother QL-820NWB Professional Label Printer

It’s easy to set up, it’s compact and quiet when printing and to top if off, the print quality is excellent. This is hands down the best printer I’ve used for printing labels.

Ben Ramsden

Sharp PN-40TC1 Huddle Board

Brainstorming, innovation, problem solving, and negotiation have all become much more productive and valuable if people can easily collaborate in real time with minimal friction.

Sarah Ieroianni

Brother QL-820NWB Professional Label Printer

The print quality also does not disappoint, it’s clear, bold, doesn’t smudge and the text is perfectly sized.

Ratchada Dunn

Sharp PN-40TC1 Huddle Board

The Huddle Board’s built in program; Sharp Touch Viewing software allows us to easily manipulate and edit our documents (jpegs and PDFs) all at the same time on the dashboard.

George Khoury

Sharp PN-40TC1 Huddle Board

The biggest perks for me would be that it comes with easy to use and comprehensive programs that make the collaboration process a whole lot more intuitive and organic

Featured Content

Product Launch Showcase

Latest Jobs

Don’t have an account? Sign up here

Don't have an account? Sign up now

Forgot password?