GSoC with radare2

May 26, 2017

Yeah you read that right. Don’t believe me? Here you go. I’ll be talking more in detail about the project in the next post. This one is more about the whole process of applying, getting selected, and stuff like that.

I’d always wanted to apply for GSoC. It’s just that things never lined up. Plus I never really believed that I was good enough to get selected. Nevertheless, I spent most of the winter break studying the code for radare2, in the hopes that they would be selected for GSoC this year, like last year. I had recently started venturing into the field of reverse engineering, and that’s how I was introduced to radare2 (since I can’t afford an IDA license).

It was tough, initially. I had never worked on a big project with other people. Plus, the radare2 code-base is updated at a very fast rate, so the talk in the organization is along the lines of “There IS documentation. It’s in C.” Plus, I couldn’t quite figure out where to start. Disheartened, I put radare2 on hold for the time.

Fast forward to February, when almost everyone in Crux (the coding club at college) was talking about which orgs they were contributing to, and hoping to apply to. After a few conversations with people whose opinions mattered, I decided to give radare2 another go. I searched through the “Easy” issues for one that seemed achievable. Fortunately, I found #6795, which was about cross references not being deleted. After some diffing around (was it a week?), I made my first every pull request (#6820). You know how there are some milestones in your life that you have to tick off? First girlfriend, first kiss, first test failed.. well this was up there and I was super happy the whole day.

I quickly followed it up with a one-line fix (#6834). And then it took some time for the next (#6902) which I consider my first serious fix. By this point, I’d started talking to a few people within the org, though I spent most of my time reading the conversations, which admittedly are pretty interesting.

Now I moved on the the next stage, which was seriously thinking about my GSoC application. radare2 had put up a list of ideas for GSoC/RSoC ‘17, and based on that, I found the idea for a gdbserver implementation inside radare2 pretty interesting, and that’s what I went for. I sent in a pull request fixing some bugs in the existing gdb client implementation, to get familiar with the source code, and started chalking out a tentative plan of action, which then helped me in writing my application. Got it reviewed by a few people within the org, sent it in a day before the deadline, and sat there with my fingers crossed from 23rd April to 4th May, waiting for the result.

And well, yeah, I got selected. Yay.