LWN.net Logo

LWN.net Weekly Edition for February 16, 2012

Book review: Open Advice

By Jake Edge
February 15, 2012

The recently released Open Advice has much to offer those who are new to free software and its communities, but there is plenty of interest to veterans as well. It is a collection of essays from an auspicious number of contributors (42) to free and open source software (FOSS) that centers around the idea of "what we wish we had known when we started". As might be guessed, the book encompasses more than that—it ranges all over the FOSS map—including recollections, war stories, philosophical musings, academic research, and good advice.

[Open Advice cover]

The book was the brainchild of KDE contributor Lydia Pintscher, who served as the editor as well as contributing one of the essays, "Being Allowed to Do Awesome". The book was released at the recent FOSDEM conference in Brussels and is available in a variety of formats (PDF, EPUB, Mobi). But the book is licensed under the CC-BY-SA license, which means that the LaTeX source is also available. In addition, printed versions of the book can be ordered from Lulu and, soon, Amazon.

The material is spread out over 16 chapters after a foreword by Free Software Foundation Europe founder Georg Greve. He sets the tone for the book by introducing the ideas of free software and communities, specifically connecting the rise of the internet and free software as "co-dependent" developments. Not only does free software run much of the internet, but many of the internet giants that are popular today (Google, Facebook, and Twitter are specifically mentioned) could not have gotten so far so fast without depending on free software.

What follows is a bit of a wander through the different facets of our communities, with an eye toward passing on some of the hard-won knowledge that these contributors have gained. Armijn Hemel notes that projects need to coalesce around code, so that there is something to work with and improve. All the design documents and ideas in the world will not actually build into a community. Evan Prodromou furthers that idea by noting that once there is code, the founder needs to step back and let others contribute. It is, he says, sometimes hard to do, but is essential:

If your software is just for you, you can keep the codebase and surrounding infrastructure as a personal playground. But if you want your software to be used, to mean something to other people, to (maybe) change the world, then you are going to need to build up a thriving, organic community of users, core committers, admins and add-on developers. People need to feel like they own the software, in the same way that you do.

Markus Krötzsch and Felipe Ortega talk about the connection between academia and FOSS, but come at it from different angles. Krötzsch looks at the challenges that researchers face when opening their code, many of which are applicable to anyone trying to form a community of users and contributors. He likens the effort to gardening. Ortega looks at how different FOSS communities evolve as project members come and go. He notes several studies of different kinds of projects and how they have overcome the "generational relay" problem—handing off the project to new leadership over time.

But in order to increase a project's contributors, some recruitment and mentoring are needed. That's the subject of one of the chapters. In it, Leslie Hawthorn points out that contrary to their belief, people new to the project have something unique to offer:

As a new contributor to a project, you are an invaluable asset not for your knowledge, but for your ignorance. When first starting work in FOSS, nothing seems (to you) so obvious as to be unworthy of mention. Take notes on the problems you have encountered and how they were fixed, then use those notes to update the project documentation or work with the community to prepare screen casts or other training materials for particularly tough problems. When you encounter something truly frustrating, realize you are in the spectacular position of helping make sure the next person who comes along does not encounter the same difficulties.

Hawthorn's point crosses into the realm of documentation, which is the subject of a later chapter, but that just highlights one of the strengths of the book. Few of the essays neatly fit into the categories of the chapter they appear in. They largely represent a personal view of the experiences of the author, which often range across various parts of the FOSS world. They are also uniformly encouraging to those who may know little or nothing about how to participate and why they might want to.

Pintscher's entry notes that the biggest enemy of free software is "not who most people on the Internet think it is", but is, instead, a lack of participation. She notes that it takes active effort from existing project members to get new contributors involved, but that it's worth the effort. It's also important to recruit from outside the existing contributor base:

People like the people you already have are great, but think about all the other great people you are missing out on, who could bring new ideas and skills to your project.

Henri Bergius writes about cross-project collaboration and notes that creating libraries, rather than frameworks, better fosters that collaboration. In addition, he says, meeting in person can go a long way toward helping projects work more closely together:

Meet the other guys. If you are from the GNOME project, go to aKademy and give a talk, and if you are a KDE developer, go and talk at GUADEC. After you have shared a beer or two collaboration over IRC happens much more naturally.

That sentiment is echoed by others, including Nóirín Plunkett in the chapter on "Conferences and Sprints":

It is the richness of our communities that makes Open Source what it is, and the shared striving towards common goals. And of course, the music sessions, the meals, the pints, and the parties! These are the things that bring us together, and you will find that once you have met people in person, even your email interactions will be much richer, much more fulfilling, and much more fruitful, than they had previously been.

But, all is not "sweetness and light" in the free software world as Máirín Duffy Strode describes in her look at the interaction between designers and developers. Her essay, "Don't Be Shy", suggests that designers (and, by extension, all new contributors) make their needs known so that they can "help the project help you help them", which can't happen without making it clear what's needed to get the job done. She also notes a bit of cautionary tale about being chased away from a project and suggests that new contributors be persistent:

This set me back a few years in getting involved – just a few harsh words on IRC made me afraid to try again for almost 5 years. I did not discover until much later that the person who had essentially chased me out of that project's IRC channel was on the fringes of the project and had a long history of such behavior, and that I really had not done anything wrong. If I had only kept trying and talked to other people, I may have been able to get started back then.

There are several essays on various aspects of documentation. From Atul Jha's reflection on how Eric S. Raymond's writings (in particular the jargon file and "How To Ask Questions The Smart Way") inspired him, to Shaun McCance's look at how to use the "crowd" to generate project documentation, there is a wealth of interesting information. Rich Bowen plays off Larry Wall's famous "virtues of a good programmer" (laziness, impatience, and hubris) and notes that those virtues unfortunately give some programmers a "license to be jerks". He goes on to describe virtues for another group:

What I have learned over my years in Open Source documentation is that the three primary virtues of a documentation specialist, and, more generally, of customer support, are laziness, patience, and humility. And that the over-arching virtue that ties these all together is respect.

Anne Gentle introduces an interesting idea about how a new contributor can "take the pulse" of a project to get a feeling for how hard or easy it will be to get involved:

I wish when I started that I had some ability to gather the "social weather" of an online community. When you walk into a restaurant with white tablecloths and couples dining and a low-level volume of conversations, the visual and auditory information you receive sets the ambiance and gives you certain clues about what to expect from your dining experience. You can translate this concept of social weather to online communities as well. An open source community gives certain clues in their mailing lists, for example. A list landing page prefixed with a lot of rules and policy around posting will be heavy in governance. A mailing list that has multiple posts emphasizing that "there are no dumb questions" is more approachable for new doc writers.

In the realm of usability, Guillaume Paumier offers up some things he's learned working with the Wikimedia Foundation. He suggests that developers sit down and passively watch users interact with their application. It is "truly an eye-opening experience". Furthermore, he offers up an important point that sometimes gets lost in the development process: "Users are an unpredictable species. But they are on your side. Learn from them."

Federico Mena Quintero has a lengthy essay on "Software that Has the Quality Without A Name". In it he takes concepts from the architectural (i.e. buildings, not software) studies done by Christopher Alexander and others and applies them to software design. The "quality without a name" is embodied in buildings and spaces that are eminently livable. Alexander has come up with a number of properties that govern such spaces and Quintero (by way of Richard Gabriel's Patterns of Software) applies those ideas to software. It is one of the more philosophical essays in the book, and well worth reading in its entirety.

There is also some real "nuts and bolts" advice on things like conference planning (from Dave Neary) and a nice explanation of "How to Ask for Money" (for conferences) by Selena Deckelmann. Beyond that, there is advice on community management and the role of a community manager from Jono Bacon, thoughts on the intersection of law and FOSS from Till Jaeger, ideas about testing from Ara Pulido (and others), and on and on. Not mentioning one of the essays in this review is in no way an indictment of the essay or author, there is more there than one could hope to cover. In addition, each reader will undoubtedly have their own slant on the most interesting and useful essays in the book.

Open Advice is a book that will be helpful to those who are new to FOSS, but, because of the individual voices, styles, and tones, it doesn't read like a "how to". It could even be recommended to those who aren't necessarily interested in contributing, but are curious about what this "free software thing" is all about. It is, in short, a great book for a variety of audiences and the (mostly) two or three page essays make it easy to read, while the anecdotes and recollections personalize it. The authors, editor, and everyone else who helped should be very pleased with the result. Readers will be too.

Comments (16 posted)

FOSDEM: The Wayland display server

February 15, 2012

This article was contributed by Koen Vervloesem

In his talk at FOSDEM (Free and Open Source Software Developers' European Meeting) 2012 in Brussels, Kristian Høgsberg gave an overview of the Wayland display system, where it comes from and how the Linux graphics stack has evolved to make Wayland feasible. He also shared some information about the schedule of the 0.85 and 1.0 releases. If all goes according to plan, we'll see the first stable version of Wayland by the end of the year.

Replacing a tried-and-true technology such as X by a new one such as Wayland is no small task, and the idea alone has already stirred up the Linux community in the past. However, not every critic understands exactly what Wayland is. Apparently some even have various strange opinions about Kristian, for instance that he holds a grudge against X or that he even doesn't know anything about how X works. To dot the i's, Kristian started his talk by clarifying that he has been a core X developer since 2004. "I admire the design and implementation of X, it just happens that it's the wrong solution for what we do now." Kristian started developing Wayland in 2008 in his spare time while working for Red Hat, and now he is working on it at Intel in the graphics team of the Open Source Technology Center.

Where do we come from?

A while ago, X did lots of things related to its primary task as a display server. For instance, it did font management and font rendering, graphical mode setting and acceleration code was tied up in X specific drivers, the X server had input drivers to parse various input device serial formats, and so on. However, bit by bit many of these tasks were moved into separate components, many of them in the kernel. Wearing his Red Hat hat, Kristian worked on AIGLX (which allowed compositors to run with hardware acceleration on X), DRI2 (which provides OpenGL hardware acceleration), KMS (Kernel Mode Setting), and GEM (Graphics Execution Manager, doing memory management for graphics drivers). In principle, all hardware drivers needed by X are now in the Linux kernel (KMS) or in Mesa (an OpenGL implementation).

Much of this work was done as part of Kristian's job as a member of Red Hat's X team to make a composited desktop possible. Without a compositor, each application renders its output directly into the buffer of the X server. With a compositor (such as Compiz, KDE's KWin, GNOME 3's Mutter, and Xfce's Xfwm), applications render their output in their own private off-screen buffers. The compositor renders the final desktop output by painting those buffers onto the screen's frame buffer. On a modern Linux desktop, compositing has become a basic expectation and requirement, Kristian says: "Compositing is not only about those 2D and 3D visual effects, but it has other fundamental advantages, such as flicker-less movements of windows."

But now that we have reached a point where most of the hardware drivers implement KMS or Mesa and compositing is used for drawing application windows on the screen, most of the work in the window system is done by the compositor and the applications themselves; the X server is just used as a middle-man for input. Kristian wanted to create a display server that directly supports this new window system architecture from the ground up. This became Wayland, which integrates the display server, window manager, and compositor into one component, and is, according to Kristian, "essentially just consolidating existing practices and simplifying the X architecture to what we are using it for nowadays." The result is a window system architecture that is more responsive and has less graphical artifacts such as tearing or flickering. More details about Wayland's architecture and the difference with X can be found on the project's wiki.

Hardware support

So, with this new window system architecture, Wayland merges the compositor into the display server, and applications talk directly to the compositor. The compositor reads input from devices such as the keyboard and mouse using the kernel's evdev subsystem, and it distributes this input to the applications. The compositor uses KMS to bring up the display, and applications push their buffers to the compositor, which combines the buffers from the various applications and renders the result using direct rendering, through OpenGL ES, to the KMS buffers. "There is no hardware-specific code whatsoever in the compositor code," Kristian emphasizes, "and there is also no rendering API for drawing lines, text, and so on: it's all just direct rendering."

Kristian's short answer to the question which graphics hardware support Wayland is "If the Mesa driver for your graphics hardware supports DRI2 under X and has KMS support, you can run Wayland." Currently, this means that you'll have most luck with the open source drivers for Intel, AMD and NVIDIA graphics hardware, but when driver writers add new chipset support in Mesa, it will automatically support Wayland. It's still unclear what AMD and NVIDIA will do with their proprietary drivers.

Wayland support in graphical toolkits

But applications have to be modified to be able to use Wayland instead of X, of course. Fortunately, most applications don't talk to the X window system directly but are using graphical toolkits, which provide the common user interface elements such as text fields, scrollbars, buttons, and so on. So most of the work in porting an application from X to Wayland is in porting the toolkit it uses. According to Kristian, all major toolkits are being ported to Wayland as we speak, including GTK+ 3, Qt 5, EFL (Enlightenment Foundation Libraries), Clutter, and SDL (Simple DirectMedia Layer). The Qt team at Nokia is maintaining and driving the Qt port themselves, he said. Wayland's web site has instructions on how to use these toolkits with Wayland. Applications that are using their own toolkit, such as Blender and LibreOffice, will have to do the porting effort themselves.

Porting a graphical toolkit to Wayland poses some interesting challenges, for instance because Wayland doesn't support some things that are quite natural in X, such as pointer grabbing: in Wayland an application currently cannot claim the keyboard or mouse input. However, games regularly grab the mouse cursor to prevent the player from accidentally losing mouse control over their game, and pop-up windows rely on grabbing the keyboard and pointer too. Another challenge is the support for client-side window decorations, which allows individual applications to control their appearance. Both challenges are being worked on.

Applications that aren't using a Wayland-compatible graphical toolkit or that have some problems running on Wayland can still run on an X server that runs as a Wayland client. Of course this adds some overhead, but it should be minimal. Running a rootless X Server as a Wayland client could also be a temporary solution to keep using network transparency, a feature that Wayland lacks. In his talk, Kristian reassured the audience that the current lack of network transparency is not definitive: "While supporting remote displays is not a priority now for Wayland, nothing in Wayland's architecture makes this impossible."

Toward a stable API

The first real release of Wayland happened a few days after Kristian's talk at FOSDEM: Wayland 0.85. The code is divided in two parts: Wayland is the protocol and IPC mechanism, while Weston is the reference implementation of the compositor (and thus also the display server). "Weston has around 10,000 lines of code and it can be used as the base for a compositor for mobile or embedded systems," according to Kristian, who ran Weston on his laptop during his FOSDEM presentation. However, existing X compositors such as KWin and Mutter can also be modified to become a Wayland compositor.

Kristian promises that the 0.85 release is going to be protocol and API stable. The point of the release is that developers can begin experimenting with Wayland and porting their toolkits and applications. While it used to be that you had to compile a special KMS "pageflip" kernel, a patched Mesa branch, and Kristian's own EGL library to be able to run Wayland on your system, now everything should be upstream. Kristian hopes to put out a Wayland 1.0 release in late 2012 or early 2013. So while Wayland will not replace X overnight, we will likely see the first mainstream use of the new window system architecture in 2013.

Comments (38 posted)

Gray areas in software licensing

February 15, 2012

This article was contributed by Dave Neary

This year saw a new addition to FOSDEM in Brussels - "legal issues" gained its own DevRoom and joined the long list of topics presented and discussed during the conference. I was privileged to be asked to speak at the track, and when Bradley Kuhn asked me what I'd like to speak about, my initial reaction was the theme: "how much I hate having to care about the law".

Developers hate the law. Or, to be more precise, I hate the law. At least, whenever I'm working on a software project. In my opinion, every time a software developer has to stop and think about the law, that's a bug. Either he wants to do something that he shouldn't be doing, or the law is getting in the way of him doing something which it would be reasonable for him to do.

In case it's not obvious yet, I am not a lawyer, so nothing in here should be taken as legal advice. But, over the years, while working as a GIMP developer, as community and product manager of the OpenWengo project, or as an independent consultant, I have had to stop and consider the potential impact of the law on what I was doing. And every time that I have sought legal advice on the issues, the result has been unsatisfactory. Here are a few examples from my personal experience.

GIMP plug-ins

In the late 1990s and early 2000s, the licensing of plug-ins was a hot topic in the GIMP community that came up repeatedly. Does the GPL allow people to develop proprietary GIMP plug-ins? It was certainly the intention of the developers active at the time to allow proprietary plug-ins. To explain why this question is even interesting, some technical details on GIMP plug-ins are useful.

GIMP plug-ins run in a separate process from the GIMP core. They link to libgimp, a library that was licensed under the LGPL in 1997, which is a wrapper around the PDB, the Procedural Database. The Procedural Database is how plug-ins communicate with the core GPL application: data is sent via shared memory, with the PDB defining arguments and return values from plug-in functions. Plug-ins can call core functions, again via the PDB, to get image data from a drawable (a GIMP object representing anything you can draw on), or for any of a range of core functions.

But some argued that since GIMP plug-ins could only work with the GIMP core, that they were really derivative works, and were thus covered by the GPL. When we asked for definitive legal advice on the issue, the answer we got back was not entirely satisfying.

Maybe.

Ugh. So to clarify the situation, the GIMP developers added a license clarification to the source code, alongside the GNU GPL COPYING file, stating that we considered plug-ins to be "mere aggregation", and not a "derivative work". This may not be legally rigorous, but it was enough to allow us to forget about the issue and get back to coding.

Distributing GIMP plug-ins

That is, until it was pointed out by Debian that GIMP was shipping some GPL-incompatible code in plug-ins that we were distributing in the gimp .tar.gz. This issue ended up blocking the release of GIMP 1.2.4 for over a year. So the question arose: can we include non-GPL plug-ins in a GIMP package? The answer was, you guessed it, "maybe". At least, that's as far as we could tell by discussing it in a Debian bug report and on gimp-developer.

While GIMP plug-ins might be a "mere aggregation" with the GIMP core, apparently, there was an expectation that all the plug-ins which were shipped with GIMP would be GPL compatible. Over the years, we had included a number of code snippets from other open source projects which were licensed under other licenses. One of the projects was SIOD, Scheme in one Defun, a Scheme implementation by George Carrette. SIOD was the back-end of Script-fu, GIMP's scripting plug-in, at the time. SIOD had a very liberal license which included an "advertising clause", requiring that "the permission notice appear in supporting documentation", a clause which was widely argued to be incompatible with the GPL at that time. It turned out that there were about a dozen occurrences of this advertising clause in the code for plug-ins at the time.

Since Debian wouldn't ship GIMP with these plug-ins unless we made the licensing consistent, and since some GIMP developers also expected us to ship only GPL-compatible plug-ins, this was a major problem. So I and others spent a month in 2003 chasing down authors at five-year-old email addresses, removing or rewriting code snippets when we could do so, and on occasion removing offending copyright headers when we decided that the amount of code covered by the problematic licenses was so small that it was not a problem. I am sure I would have preferred to do other things with my time - and I was certainly not as methodical as Gervase Markham when he was relicensing Mozilla code - a process that took over 4 years. Were we legally rigorous? Maybe.

OpenWengo codecs

My next example is audio codecs from the OpenWengo project (site now dead). Some codecs like G729 were patent encumbered. In addition, widely used reference implementations of codecs like iLBC were included as sample code in standards documents and were only available under GPL-incompatible and non-free software licenses. The way we tried to get around this problem was to encapsulate these codecs in a standard API, and install them in a common directory. At start-up, we scanned the directory, and used dlopen() to open the libraries present there. We could then call the standard function to register the codecs and pass data streams for decoding and encoding.

A question arose for some of the non-GPL codecs: could we do something in the start-up process to make it easier for the user to obtain these codecs? One possibility would be to present the user with a dialog, as part of the first application start-up, which fetched the proprietary codecs and installed them in the common directory. But, would that be against the spirit of the GPL, and have us running the risk of being called a GPL violator by one of our users?

The answer, apparently, is "maybe".

By divorcing the loading of the plug-in at run-time from the distribution of the plug-in, we were probably absolving ourselves of any GPL obligations. At least, that is the legal advice Wengo obtained at the time. However, whether making it easier to get the codecs at start-up was the legal equivalent to including the codecs in the package was, at best, ambiguous.

Hunspell dictionaries

Last year, I was asked an interesting question by a client: Can I include Hunspell and the Czech dictionary in a proprietary application?

The answer, of course, is "maybe".

Hunspell changed its license in 2006, to the MPL/GPL/LGPL tri-license to enable inclusion in Mozilla. It is used as the spell-checker for OpenOffice.org/LibreOffice as well as Mozilla Thunderbird and Firefox. Of course, the tri-license enables the embedding of Hunspell in proprietary applications. So where's the problem? It turns out that some Hunspell dictionaries, including Catalan, Danish and Czech, are licensed under GPL only. It's a bit curious why anyone would use the GPL, a license intended for use with source code, for a dictionary. Regardless, the question is: does including Hunspell in another application, with a GPL dictionary, constitute a derivative work, or an aggregation?

At one level, the question is whether it even makes sense for a dictionary to have a license. Thanks to Feist v Rural, copyright only applies to a "work" if there is significant creativity involved in it. If a Hunspell dictionary were just a list of words in alphabetical order, then at least in the US, copyright would not apply. However, in other jurisdictions, there are laws covering the constitution of databases, and some form of protection is afforded to the author. In addition, a Hunspell dictionary isn't really just a list of words - it also contains grammatical and hyphenation information, which involves some creativity. So there's a solid argument that the dictionary is copyrightable.

The second question is whether including the dictionary with Hunspell and other software makes a derivative work, or an aggregate work. One part of that is whether the component is useful without the Hunspell spellchecker. Since it's just a dictionary, it can be used with other spell-checkers, including aspell. Hunspell could easily use another Czech dictionary released under another license. So, since the two bits are easily dissociable, Hunspell with the dictionary probably makes an aggregate work, and the license of the dictionary does not impose any requirements on other software shipped with it. This is the advice that the OpenOffice.org project received from the FSF licensing list, and so the GPL dictionaries are included in the LibreOffice and OpenOffice.org distributions.

Mozilla, on the other hand, do not ship any GPL dictionaries. When I asked Gervase why, he answered:

It is arguable whether the GPL would cross the dictionary->application boundary. But again, we prefer to respect people's intentions, and it seems to us that if someone licenses their dictionary GPL-only, then they probably only want it used in GPL apps.

In other words, the intent of the author trumps all in this case, for Mozilla.

So - maybe.

Conversations with lawyers

The problem for developers is that conversations with lawyers typically end up with "maybe". We're looking for what we may and may not do, and often, in the absence of jurisprudence, lawyers deal in shades of gray. All too often, the end result for developers is to avoid any risk.

A friend once told me a story of a meeting with her boss and "legal", where she came out of the meeting disappointed. When her boss asked her what was wrong, she said "the lawyers told us we can't do what we'd like to." To which he replied, "No, they just told us the risks involved. Now we have to decide whether we're prepared to accept those risks or not." Instead of being the end of the conversation, "maybe" could be the start of it. Lawyers (and , in the free software world, some non-lawyers) will help you identify risks. But then it is up to the project to decide whether to take the risks or not.

Comments (17 posted)

Page editor: Jonathan Corbet

Security

Tor offers SSL obfuscation for users behind censorship walls

February 15, 2012

This article was contributed by Nathan Willis

On February 10, the Tor project posted reports from users inside Iran that the country's government had begun blocking all SSL/TLS traffic, a major escalation of firewall policies that had already cut off users from specific services. Tor responded by pointing readers to obfsproxy, its comparatively-little-known project that can disguise SSL traffic to evade detection by the deep packet inspection (DPI) filters used to flag and shut down encrypted connections.

Word from users in Iran was that the government SSL-blocking effort appeared to be DPI-based, because of the fact that connections were being terminated only after the first few steps of the SSL handshake. Other methods to bypass the firewall, including VPNs, were still functional, although they are an impractical (and sometimes expensive) solution for the majority of Iranian Internet users. However, the block prevents standard Tor usage in particular, because the system relies on an encrypted connection between the user's machine and the first relay in the Tor network.

Earlier filtering techniques, such as blocking access to specific IP addresses, had been bypassed by using bridges — Tor relays that ran on unpublished IPs. Reports indicated that the SSL-block varies by ISP, and had not affected the entire country, but the project's metrics showed a sharp decline in the number of Tor users originating from Iran, starting around February 9. Alongside the announcement of obfsproxy, the Tor project asked users to help restore connectivity for people in the region by setting up obfuscated bridges — but cautioned that drawing too much public attention to the project could prompt authorities to implement countermeasures.

It rolls right off the tongue: "obfsproxy"

Obfsproxy — which, although just announced to the public, has been in development since early 2011 — offers relief from DPI filtering. It is a transport proxy that encapsulates protocol traffic between endpoints within an "innocent-looking" wrapper. The system is modular enough that the project says it can be used with a variety of protocols, but the default usage is designed to wrap SSL traffic between a Tor client and Tor bridge inside another application-layer connection. Furthermore, within those faux application-layer packets, the genuine SSL packets are encrypted by a stream cipher, making their contents immune to detection by DPI filters (which catch protocols by matching characteristic strings or regular expressions in the TCP stream).

Obfsproxy's default module is called obfs2, and merely disguises SSL traffic as unencrypted SOCKS traffic. It does not itself provide authentication, confidentiality, or guarantee data integrity. Those features must be provided by the traffic being obfuscated (e.g., SSL and Tor). Nor does it protect against protocol fingerprinting using other means (such as timing or packet size), nor against attackers looking specifically for obfsproxy itself. The threat model document in the project's Git repository outlines the assumptions and characteristics in specific detail, and argues that although the scope is limited: it "protects against many real-life Tor traffic detection methods currently deployed, since most of them currently use static SSL handshake strings as signatures."

Tor executive director Andrew Lewman told Forbes magazine that other protocol wrappers are a possibility for future releases, including XMPP and vanilla HTTP, and described a simpler client-side interface. At the moment, however, he described the project as "very much a work in progress, and the various pluggable transports are still in design and development."

The anatomy of obfs2

Obfsproxy is a recent addition to Tor, and although the project has released updated Tor Browser Bundle binaries pre-configured to use it, for most existing Tor users it requires compiling and running the client code — as well as knowledge of a Tor bridge also configured to run obfsproxy. Still, Tor reports that users in Iran are taking advantage of the code to successfully restore their lost connectivity.

Masking a Tor connection between client and bridge requires both participants to be running obfsproxy, but the client-bridge connection is the only one involved in the obfuscation — no general-purpose Tor nodes (including exit nodes) are required to install obfsproxy or need to alter their configuration.

Interested client and bridge users should fetch obfsproxy from the Tor project's Git repository and compile it with Autogen and GNU make. All versions of Tor newer than 0.2.3.11 can be configured to use obfsproxy simply by editing the Tor configuration file. Clients must add the IP address and port number of an obfsproxy-aware bridge and path to the obfsproxy executable. Bridge operators must start Tor and watch their logs, because Tor randomly selects an open, higher-numbered TCP port for obfsproxy to listen on the first time it is run. Older versions of Tor can use obfsproxy, too, using additional steps to configure a localhost-only relay between Tor and the obfsproxy program.

Whichever setup is involved, the obfs2 protocol operates in the same manner. It is based on Bruce Leidl's older work to obfuscate SSH handshakes. The client and the bridge first exchange session keys with each other, after which they "superencipher" their SSL session by encrypting it with 128-bit AES.

By default the protocol uses a relatively weak key-exchange method that could be compromised by an eavesdropper listening to both sides of the conversation — although the use of a pre-shared secret to strengthen this step is supported as well. It may sound as if the weak key exchange method undermines the whole process, but the important thing to remember is that the obfuscation protocol's only goal is to defeat automatic detection by pattern-matching DPI filters. Furthermore, the seed values that the client and bridge exchange are concatenated with constants and then hashed with SHA256, a step that does not make them unrecoverable, but that is computationally expensive to perform on the class of high-throughput networking hardware generally used to do DPI traffic analysis.

Obfuscation for all

To the paranoid, obfs2 may sound like an imperfect solution to the filtering crisis. After all, it could be defeated by closer inspection of packets or filtering out SOCKS traffic. In that sense, obfsproxy might be likened to steganography — its goal is to hide the traffic of estimated tens-of-thousands of Tor users in a censored region like Iran among the connections of millions.

The Tor project reports that it has performed experiments of its own, and found obfsproxy to be effective "in all censored countries" when used as-is. However, as Jacob Appelbaum mentioned in the call for obfsproxy bridges, "it might even only last for a few days at the rate the arms race is progressing, if you could call it progress." Then again, thanks to the modular design of obfsproxy, the obfs2 module itself can be replaced or upgraded in future releases, both to disguise traffic better, or to implement completely different security features. The sudden crackdown on all SSL traffic in Iran might have hit before a perfect system was in place, but obfsproxy is still a welcome relief for those who are affected, and have no other practical options.

Comments (8 posted)

Brief items

Security quotes of the week

Sorry, that was not correct. The "1" was actually an upper-case, sans-serif "I." Please try again by typing the following letters and numbers, this time using your nondominant hand and with one eye closed:

[...] Sorry, the second "X" was also lowercase. It looked larger because it was closer to the screen than the first. Please try again by retyping the words you see in this box:

-- The New York Times has some fun with CAPTCHA

As shown in the movie, the tool has a database that contains city profiles including Paris, Berlin, Amsterdam, Brussels, and Geneva. The tool runs on the right and on the left is the browser accessing Google Maps over SSL. In the first attempt, I load the city of Paris and zoom in a couple of times. On the second attempt I navigate to Berlin and zoom in a few times. On both occasions the tool manages to correctly guess the locations that the browser is accessing.

Please note that it is a shoddy proof of concept, but it shows the concept of SSL traffic analysis pretty well. It also might be easier to understand for less technically inclined people, as in "An attacker can still figure out what you're looking at on Google Maps" (with the addendum that it's never going to be a 100% perfect and that my shoddy proof of concept has lots of room for improvement).

-- Vincent Berg

The publication, citing a former 19-year Nortel employee who oversaw the investigation into the hack, said Nortel did nothing to keep out the hackers except to change seven compromised passwords that belonged to the CEO and other executives. The company "made no effort to determine if its products were also compromised by hackers," the WSJ [Wall Street Journal] said. Nortel, which sold off parts of its business as part of a 2009 bankruptcy filing, spent about six months investigating the breach and didn't disclose it to prospective buyers.
-- ars technica reports on a 2000 infiltration of Nortel

Comments (8 posted)

Trustwave admits issuing man-in-the-middle digital certificate (ComputerWorld)

Here's a variant on the "untrustworthy SSL certificate authority" theme: this ComputerWorld story describes how Trustwave issued a "subordinate root" certificate to a private company. That allowed said company to stamp out certificates for any domains it liked and conduct man-in-the-middle attacks against SSL traffic from its internal network. "Trustwave defended itself by saying that the issuing of subordinate roots to private companies, so they can inspect the SSL-encrypted traffic that passes through their networks, is a common practice in the industry."

Comments (40 posted)

Horde Groupware contains backdoor (The H)

The H is reporting that a backdoor was inserted into installation packages of the Horde groupware. The affected versions are "Horde 3.3.12, Groupware 1.2.10 and the webmail edition of the groupware product". An intrusion into the FTP server back in November led to the problem. "Users who have installed a hacked version onto a server have thrown their systems wide open to the hackers – the backdoor enables them to execute arbitrary PHP code. By exploiting additional vulnerabilities, attackers could use this to gain complete control of the server."

Comments (none posted)

Garrett: Some things you may have heard about Secure Boot which aren't entirely true

Matthew Garrett clears up some Secure Boot myths on his blog:

It's only a problem for hobbyist Linux, not the real Linux market:

Untrue. It's unclear whether even the significant Linux vendors can implement Secure Boot in a way that meets the needs of their customers and still allows them to boot on commodity hardware. A naive implementation removes many of the benefits of Linux for enterprise customers, such as the ability to use local modifications to micro-optimise systems for specific workloads. One of the key selling points of Linux is the ability to make use of local expertise when adapting the product for your needs. Secure Boot makes that more difficult.

Comments (2 posted)

New vulnerabilities

apr: denial of service

Package(s):apr CVE #(s):CVE-2012-0840
Created:February 14, 2012 Updated:March 1, 2012
Description: From the Mandriva advisory:

tables/apr_hash.c in the Apache Portable Runtime (APR) library through 1.4.5 computes hash values without restricting the ability to trigger hash collisions predictably, which allows context-dependent attackers to cause a denial of service (CPU consumption) via crafted input to an application that maintains a hash table.

Alerts:
Mandriva MDVSA-2012:019 2012-02-14
Fedora FEDORA-2012-1656 2012-03-01
Fedora FEDORA-2012-1709 2012-03-01

Comments (none posted)

bugzilla: multiple vulnerabilities

Package(s):bugzilla CVE #(s):CVE-2012-0440 CVE-2012-0448
Created:February 13, 2012 Updated:February 15, 2012
Description: From the CVE entries:

Cross-site request forgery (CSRF) vulnerability in jsonrpc.cgi in Bugzilla 3.5.x and 3.6.x before 3.6.8, 3.7.x and 4.0.x before 4.0.4, and 4.1.x and 4.2.x before 4.2rc2 allows remote attackers to hijack the authentication of arbitrary users for requests that use the JSON-RPC API. (CVE-2012-0440)

Bugzilla 2.x and 3.x before 3.4.14, 3.5.x and 3.6.x before 3.6.8, 3.7.x and 4.0.x before 4.0.4, and 4.1.x and 4.2.x before 4.2rc2 does not reject non-ASCII characters in e-mail addresses of new user accounts, which makes it easier for remote authenticated users to spoof other user accounts by choosing a similar e-mail address. (CVE-2012-0448)

Alerts:
Fedora FEDORA-2012-1218 2012-02-10
Fedora FEDORA-2012-1189 2012-02-10

Comments (none posted)

cvs: remote code execution

Package(s):cvs CVE #(s):CVE-2012-0804
Created:February 9, 2012 Updated:March 29, 2012
Description:

From the Debian advisory:

It was discovered that a malicious CVS server could cause a heap overflow in the CVS client, potentially allowing the server to execute arbitrary code on the client.

Alerts:
Debian DSA-2407-1 2012-02-09
Fedora FEDORA-2012-1383 2012-02-15
Fedora FEDORA-2012-1400 2012-02-15
Ubuntu USN-1371-1 2012-02-22
CentOS CESA-2012:0321 2012-02-22
Oracle ELSA-2012-0321 2012-02-21
Red Hat RHSA-2012:0321-01 2012-02-21
openSUSE openSUSE-SU-2012:0310-1 2012-02-27
Scientific Linux SL-cvs-20120306 2012-03-06
Oracle ELSA-2012-0321 2012-03-09
Mandriva MDVSA-2012:044 2012-03-29

Comments (none posted)

devscripts: multiple vulnerabilities

Package(s):devscripts CVE #(s):CVE-2012-0210 CVE-2012-0211 CVE-2012-0212
Created:February 15, 2012 Updated:February 15, 2012
Description: From the Debian advisory:

CVE-2012-0210: Paul Wise discovered that due to insufficient input sanitising when processing .dsc and .changes files, it is possible to execute arbitrary code and disclose system information.

CVE-2012-0211: Raphael Geissert discovered that it is possible to inject or modify arguments of external commands when processing source packages with specially-named tarballs in the top-level directory of the .orig tarball, allowing arbitrary code execution.

CVE-2012-0212: Raphael Geissert discovered that it is possible to inject or modify arguments of external commands when passing as argument to debdiff a specially-named file, allowing arbitrary code execution.

Alerts:
Debian DSA-2409-1 2012-02-15
Ubuntu USN-1366-1 2012-02-15
Ubuntu USN-1593-1 2012-10-02

Comments (none posted)

ettercap: insecure settings file

Package(s):ettercap CVE #(s):CVE-2010-3843
Created:February 9, 2012 Updated:April 9, 2013
Description:

From the Red Hat bugzilla entry:

The GTK version of ettercap uses a global settings file at /tmp/.ettercap_gtk and does not verify ownership of this file. When parsing this file for settings in gtkui_conf_read() (src/interfaces/gtk/ec_gtk_conf.c), an unchecked sscanf() call allows a maliciously placed settings file to overflow a statically-sized buffer on the stack. Stack-smashing protection catches it, but it still should be fixed.

Verify with: $ perl -e 'print "A"x500' > /tmp/.ettercap_gtk && ettercap -G

Firstly, the settings file should not be globally accessible without checking ownership, which still gets hairy because an attacker could create a symlink or hard link to a victim-controlled file (unless you're using YAMA :p). The best thing would probably be to keep this file in the user's home directory instead.

Secondly, parsing configuration files should be robust against malformed input and not susceptible to trivial buffer overflows.

Alerts:
Fedora FEDORA-2012-1066 2012-02-08
Fedora FEDORA-2012-1054 2012-02-08
Mageia MGASA-2012-0214 2012-08-12
Mandriva MDVSA-2013:077 2013-04-09

Comments (none posted)

firefox: multiple vulnerabilities

Package(s):MozillaFirefox CVE #(s):CVE-2012-0443 CVE-2012-0445 CVE-2012-0446 CVE-2012-0447 CVE-2012-0450
Created:February 9, 2012 Updated:February 15, 2012
Description:

From the openSUSE advisory:

CVE-2012-0443: Ben Hawkes, Christian Holler, Honza Bombas, Jason Orendorff, Jesse Ruderman, Jan Odvarko, Peter Van Der Beken, and Bill McCloskey reported memory safety problems that were fixed in Firefox 10.

MFSA 2012-03/CVE-2012-0445: Alex Dvorov reported that an attacker could replace a sub-frame in another domain's document by using the name attribute of the sub-frame as a form submission target. This can potentially allow for phishing attacks against users and violates the HTML5 frame navigation policy.

MFSA 2012-05/CVE-2012-0446: Mozilla security researcher moz_bug_r_a4 reported that frame scripts bypass XPConnect security checks when calling untrusted objects. This allows for cross-site scripting (XSS) attacks through web pages and Firefox extensions. The fix enables the Script Security Manager (SSM) to force security checks on all frame scripts.

MFSA 2012-06/CVE-2012-0447: Mozilla developer Tim Abraldes reported that when encoding images as image/vnd.microsoft.icon the resulting data was always a fixed size, with uninitialized memory appended as padding beyond the size of the actual image. This is the result of mImageBufferSize in the encoder being initialized with a value different than the size of the source image. There is the possibility of sensitive data from uninitialized memory being appended to a PNG image when converted fron an ICO format image. This sensitive data may then be disclosed in the resulting image.

MFSA 2012-09/CVE-2012-0450: magicant starmen reported that if a user chooses to export their Firefox Sync key the "Firefox Recovery Key.html" file is saved with incorrect permissions, making the file contents potentially readable by other users on Linux and OS X systems.

Alerts:
openSUSE openSUSE-SU-2012:0234-1 2012-02-09
Fedora FEDORA-2012-1147 2012-02-10
Fedora FEDORA-2012-1147 2012-02-10
Fedora FEDORA-2012-1147 2012-02-10
Fedora FEDORA-2012-1147 2012-02-10
Fedora FEDORA-2012-1147 2012-02-10
Fedora FEDORA-2012-1147 2012-02-10
Fedora FEDORA-2012-1147 2012-02-10
Fedora FEDORA-2012-1147 2012-02-10
Ubuntu USN-1369-1 2012-02-17
openSUSE openSUSE-SU-2012:0567-1 2012-04-27
Gentoo 201301-01 2013-01-07

Comments (none posted)

glpi: file inclusion vulnerability

Package(s):glpi CVE #(s):CVE-2012-1037
Created:February 13, 2012 Updated:February 20, 2012
Description: GLPI v 0.78 to 0.80.61 fails to properly sanitize the GET 'sub_type' parameter in the front/popup.php file. This has been fixed in GLPI 0.80.7. See this post on the Full Disclosure mailing list for additional details.
Alerts:
Mandriva MDVSA-2012:016 2012-02-10
Fedora FEDORA-2012-1519 2012-02-19
Fedora FEDORA-2012-1534 2012-02-19

Comments (none posted)

gnutls: denial of service

Package(s):gnutls CVE #(s):CVE-2011-4128
Created:February 9, 2012 Updated:March 30, 2012
Description:

From the openSUSE advisory:

Large server tickets could crash gnutls clients.

Alerts:
openSUSE openSUSE-SU-2012:0215-1 2012-02-09
Red Hat RHSA-2012:0428-01 2012-03-27
Red Hat RHSA-2012:0429-01 2012-03-27
CentOS CESA-2012:0428 2012-03-28
CentOS CESA-2012:0429 2012-03-28
Scientific Linux SL-gnut-20120328 2012-03-28
Scientific Linux SL-gnut-20120328 2012-03-28
Oracle ELSA-2012-0428 2012-03-28
Oracle ELSA-2012-0429 2012-03-28
Mandriva MDVSA-2012:045 2012-03-30
Ubuntu USN-1418-1 2012-04-05
Fedora FEDORA-2012-4569 2012-04-11
Gentoo 201206-18 2012-06-23

Comments (none posted)

java: multiple vulnerabilities

Package(s):java-1.6.0-openjdk CVE #(s):CVE-2011-3563 CVE-2011-3571 CVE-2011-5035 CVE-2012-0497 CVE-2012-0501 CVE-2012-0502 CVE-2012-0503 CVE-2012-0505 CVE-2012-0506
Created:February 15, 2012 Updated:February 6, 2013
Description:

From the Red Hat advisory:

It was discovered that Java2D did not properly check graphics rendering objects before passing them to the native renderer. Malicious input, or an untrusted Java application or applet could use this flaw to crash the Java Virtual Machine (JVM), or bypass Java sandbox restrictions. (CVE-2012-0497)

It was discovered that the exception thrown on deserialization failure did not always contain a proper identification of the cause of the failure. An untrusted Java application or applet could use this flaw to bypass Java sandbox restrictions. (CVE-2012-0505)

The AtomicReferenceArray class implementation did not properly check if the array was of the expected Object[] type. A malicious Java application or applet could use this flaw to bypass Java sandbox restrictions. (CVE-2011-3571)

It was discovered that the use of TimeZone.setDefault() was not restricted by the SecurityManager, allowing an untrusted Java application or applet to set a new default time zone, and hence bypass Java sandbox restrictions. (CVE-2012-0503)

The HttpServer class did not limit the number of headers read from HTTP requests. A remote attacker could use this flaw to make an application using HttpServer use an excessive amount of CPU time via a specially-crafted request. This update introduces a header count limit controlled using the sun.net.httpserver.maxReqHeaders property. The default value is 200. (CVE-2011-5035)

The Java Sound component did not properly check buffer boundaries. Malicious input, or an untrusted Java application or applet could use this flaw to cause the Java Virtual Machine (JVM) to crash or disclose a portion of its memory. (CVE-2011-3563)

A flaw was found in the AWT KeyboardFocusManager that could allow an untrusted Java application or applet to acquire keyboard focus and possibly steal sensitive information. (CVE-2012-0502)

It was discovered that the CORBA (Common Object Request Broker Architecture) implementation in Java did not properly protect repository identifiers on certain CORBA objects. This could have been used to modify immutable object data. (CVE-2012-0506)

An off-by-one flaw, causing a stack overflow, was found in the unpacker for ZIP files. A specially-crafted ZIP archive could cause the Java Virtual Machine (JVM) to crash when opened. (CVE-2012-0501)

Alerts:
Red Hat RHSA-2012:0135-01 2012-02-15
CentOS CESA-2012:0135 2012-02-15
Scientific Linux SL-java-20120215 2012-02-15
Fedora FEDORA-2012-1690 2012-02-15
Oracle ELSA-2012-0135 2012-02-15
Red Hat RHSA-2012:0139-01 2012-02-16
Mandriva MDVSA-2012:021 2012-02-17
Fedora FEDORA-2012-1711 2012-02-17
Fedora FEDORA-2012-1721 2012-02-22
Red Hat RHSA-2012:0322-01 2012-02-21
Ubuntu USN-1373-1 2012-02-24
Scientific Linux SL-java-20120227 2012-02-27
openSUSE openSUSE-SU-2012:0309-1 2012-02-27
Scientific Linux SL-java-20120228 2012-02-28
SUSE SUSE-SU-2012:0308-1 2012-02-27
Debian DSA-2420-1 2012-02-28
Ubuntu USN-1373-2 2012-03-01
Oracle ELSA-2012-0322 2012-03-09
Red Hat RHSA-2012:0508-01 2012-04-23
Red Hat RHSA-2012:0514-01 2012-04-24
SUSE SUSE-SU-2012:0602-1 2012-05-09
SUSE SUSE-SU-2012:0603-1 2012-05-09
Red Hat RHSA-2012:0702-01 2012-05-30
SUSE SUSE-SU-2012:0734-1 2012-06-13
SUSE SUSE-SU-2012:0881-1 2012-07-16
SUSE SUSE-SU-2012:1013-1 2012-08-21
openSUSE openSUSE-SU-2012:1323-1 2012-10-10
Fedora FEDORA-2012-16351 2012-10-18
Fedora FEDORA-2013-1898 2013-02-05

Comments (none posted)

kernel: denial of service

Package(s):kernel CVE #(s):CVE-2011-4087
Created:February 9, 2012 Updated:February 15, 2012
Description:

From the openSUSE advisory:

CVE-2011-4087: A local denial of service when using bridged networking via a flood ping was fixed.

Alerts:
openSUSE openSUSE-SU-2012:0236-1 2012-02-09

Comments (none posted)

kernel: memory corruption

Package(s):kernel CVE #(s):CVE-2011-4604
Created:February 9, 2012 Updated:February 15, 2012
Description:

From the openSUSE advisory:

CVE-2011-4604: If root does read() on a specific socket, it's possible to corrupt (kernel) memory over network, with an ICMP packet, if the B.A.T.M.A.N. mesh protocol is used.

Alerts:
openSUSE openSUSE-SU-2012:0206-1 2012-02-09
openSUSE openSUSE-SU-2012:0236-1 2012-02-09

Comments (none posted)

kernel: multiple vulnerabilities

Package(s):kernel CVE #(s):CVE-2011-4086 CVE-2012-0028
Created:February 9, 2012 Updated:June 1, 2012
Description:

From the Red Hat advisory:

A flaw was found in the way the Linux kernel's journal_unmap_buffer() function handled buffer head states. On systems that have an ext4 file system with a journal mounted, a local, unprivileged user could use this flaw to cause a denial of service. (CVE-2011-4086, Moderate)

A flaw was found in the way the Linux kernel handled robust list pointers of user-space held futexes across exec() calls. A local, unprivileged user could use this flaw to cause a denial of service or, eventually, escalate their privileges. (CVE-2012-0028, Important)

Alerts:
Red Hat RHSA-2012:0107-01 2012-02-09
CentOS CESA-2012:0107 2012-02-09
Scientific Linux SL-kern-20120213 2012-02-13
Oracle ELSA-2012-0107 2012-02-10
Fedora FEDORA-2012-1497 2012-02-10
Fedora FEDORA-2012-1503 2012-02-11
Red Hat RHSA-2012:0358-01 2012-03-06
Ubuntu USN-1390-1 2012-03-06
Oracle ELSA-2012-0150 2012-03-07
openSUSE openSUSE-SU-2012:0540-1 2012-04-20
SUSE SUSE-SU-2012:0554-1 2012-04-23
SUSE SUSE-SU-2012:0554-2 2012-04-26
Ubuntu USN-1431-1 2012-04-30
Ubuntu USN-1433-1 2012-04-30
Ubuntu USN-1432-1 2012-05-07
Ubuntu USN-1440-1 2012-05-08
Debian DSA-2469-1 2012-05-10
SUSE SUSE-SU-2012:0616-1 2012-05-14
Red Hat RHSA-2012:0571-01 2012-05-15
Red Hat RHSA-2012:0670-01 2012-05-15
CentOS CESA-2012:0571 2012-05-16
Ubuntu USN-1445-1 2012-05-17
Scientific Linux SL-kern-20120518 2012-05-18
Oracle ELSA-2012-2014 2012-05-21
Oracle ELSA-2012-2014 2012-05-21
Oracle ELSA-2012-2013 2012-05-21
Oracle ELSA-2012-2013 2012-05-21
Oracle ELSA-2012-0571 2012-05-21
Ubuntu USN-1453-1 2012-05-25
Ubuntu USN-1454-1 2012-05-25
Ubuntu USN-1458-1 2012-05-31
openSUSE openSUSE-SU-2012:0799-1 2012-06-28
Oracle ELSA-2012-0862 2012-07-02
openSUSE openSUSE-SU-2012:1439-1 2012-11-05

Comments (none posted)

kernel: unauthorized file access

Package(s):kernel CVE #(s):CVE-2012-0055
Created:February 13, 2012 Updated:February 15, 2012
Description: From the Ubuntu advisory:

Andy Whitcroft discovered a that the Overlayfs filesystem was not doing the extended permission checks needed by cgroups and Linux Security Modules (LSMs). A local user could exploit this to by-pass security policy and access files that should not be accessible.

Alerts:
Ubuntu USN-1363-1 2012-02-13
Ubuntu USN-1364-1 2012-02-13
Ubuntu USN-1384-1 2012-03-06

Comments (none posted)

mozilla: code execution

Package(s):mozilla-thunderbird, firefox CVE #(s):CVE-2012-0452
Created:February 13, 2012 Updated:February 16, 2012
Description: From the Mandriva advisory:

Use-after-free vulnerability in Mozilla Firefox 10.x before 10.0.1, Thunderbird 10.x before 10.0.1, and SeaMonkey 2.7 allows remote attackers to cause a denial of service (application crash) or possibly execute arbitrary code via vectors that trigger failure of an nsXBLDocumentInfo::ReadPrototypeBindings function call, related to the cycle collector's access to a hash table containing a stale XBL binding

Alerts:
Mandriva MDVSA-2012:018 2012-02-13
Mandriva MDVSA-2012:017 2012-02-12
Ubuntu USN-1360-1 2012-02-13
openSUSE openSUSE-SU-2012:0258-1 2012-02-14
SUSE SUSE-SU-2012:0261-1 2012-02-16
Ubuntu USN-1369-1 2012-02-17
openSUSE openSUSE-SU-2012:0567-1 2012-04-27
Gentoo 201301-01 2013-01-07

Comments (none posted)

mysql: multiple unspecified vulnerabilities

Package(s):mysql CVE #(s):CVE-2012-0117 CVE-2012-0486 CVE-2012-0487 CVE-2012-0488 CVE-2012-0489 CVE-2012-0491 CVE-2012-0493 CVE-2012-0494 CVE-2012-0495 CVE-2012-0496
Created:February 13, 2012 Updated:February 16, 2012
Description: From the CVE entries:

Unspecified vulnerability in the MySQL Server component in Oracle MySQL 5.5.x allows remote authenticated users to affect availability via unknown vectors, a different vulnerability than CVE-2012-0486, CVE-2012-0487, CVE-2012-0488, CVE-2012-0489, CVE-2012-0491, CVE-2012-0493, and CVE-2012-0495. (CVE-2012-0117)

Unspecified vulnerability in the MySQL Server component in Oracle MySQL 5.5.x allows remote authenticated users to affect availability via unknown vectors, a different vulnerability than CVE-2012-0117, CVE-2012-0487, CVE-2012-0488, CVE-2012-0489, CVE-2012-0491, CVE-2012-0493, and CVE-2012-0495. (CVE-2012-0486)

Unspecified vulnerability in the MySQL Server component in Oracle MySQL 5.5.x allows remote authenticated users to affect availability via unknown vectors, a different vulnerability than CVE-2012-0117, CVE-2012-0486, CVE-2012-0488, CVE-2012-0489, CVE-2012-0491, CVE-2012-0493, and CVE-2012-0495. (CVE-2012-0487)

Unspecified vulnerability in the MySQL Server component in Oracle MySQL 5.5.x allows remote authenticated users to affect availability via unknown vectors, a different vulnerability than CVE-2012-0117, CVE-2012-0486, CVE-2012-0487, CVE-2012-0489, CVE-2012-0491, CVE-2012-0493, and CVE-2012-0495. (CVE-2012-0488)

Unspecified vulnerability in the MySQL Server component in Oracle MySQL 5.5.x allows remote authenticated users to affect availability via unknown vectors, a different vulnerability than CVE-2012-0117, CVE-2012-0486, CVE-2012-0487, CVE-2012-0488, CVE-2012-0491, CVE-2012-0493, and CVE-2012-0495. (CVE-2012-0489)

Unspecified vulnerability in the MySQL Server component in Oracle MySQL 5.5.x allows remote authenticated users to affect availability via unknown vectors, a different vulnerability than CVE-2012-0117, CVE-2012-0486, CVE-2012-0487, CVE-2012-0488, CVE-2012-0489, CVE-2012-0493, and CVE-2012-0495. (CVE-2012-0491)

Unspecified vulnerability in the MySQL Server component in Oracle MySQL 5.5.x allows remote authenticated users to affect availability via unknown vectors, a different vulnerability than CVE-2012-0117, CVE-2012-0486, CVE-2012-0487, CVE-2012-0488, CVE-2012-0489, CVE-2012-0491, and CVE-2012-0495. (CVE-2012-0493)

Unspecified vulnerability in the MySQL Server component in Oracle MySQL 5.5.x allows local users to affect availability via unknown vectors. (CVE-2012-0494)

Unspecified vulnerability in the MySQL Server component in Oracle MySQL 5.5.x allows remote authenticated users to affect availability via unknown vectors, a different vulnerability than CVE-2012-0117, CVE-2012-0486, CVE-2012-0487, CVE-2012-0488, CVE-2012-0489, CVE-2012-0491, and CVE-2012-0493. (CVE-2012-0495)

Unspecified vulnerability in the MySQL Server component in Oracle MySQL 5.5.x allows remote authenticated users to affect confidentiality and integrity via unknown vectors. (CVE-2012-0496)

Alerts:
Fedora FEDORA-2012-0987 2012-02-12

Comments (1 posted)

mysql: multiple unspecified vulnerabilities

Package(s):mysql CVE #(s):CVE-2011-2262 CVE-2012-0075 CVE-2012-0087 CVE-2012-0101 CVE-2012-0102 CVE-2012-0112 CVE-2012-0113 CVE-2012-0114 CVE-2012-0115 CVE-2012-0116 CVE-2012-0118 CVE-2012-0119 CVE-2012-0120 CVE-2012-0484 CVE-2012-0485 CVE-2012-0490 CVE-2012-0492
Created:February 9, 2012 Updated:August 13, 2012
Description:

From the Red Hat advisory:

CVE-2011-2262 mysql: Unspecified vulnerability allows remote attackers to affect availability

CVE-2012-0075 mysql: Unspecified vulnerability allows remote authenticated users to affect integrity

CVE-2012-0087 mysql: Unspecified vulnerability allows remote authenticated users to affect availability

CVE-2012-0101 mysql: Unspecified vulnerability allows remote authenticated users to affect availability

CVE-2012-0102 mysql: Unspecified vulnerability allows remote authenticated users to affect availability

CVE-2012-0112 mysql: Unspecified vulnerability allows remote authenticated users to affect availability

CVE-2012-0113 mysql: Unspecified vulnerability allows remote authenticated users to affect confidentiality and availability

CVE-2012-0114 mysql: Unspecified vulnerability allows local users to affect confidentiality and integrity

CVE-2012-0115 mysql: Unspecified vulnerability allows remote authenticated users to affect availability

CVE-2012-0116 mysql: Unspecified vulnerability allows remote authenticated users to affect confidentiality and integrity

CVE-2012-0118 mysql: Unspecified vulnerability allows remote authenticated users to affect confidentiality and availability

CVE-2012-0119 mysql: Unspecified vulnerability allows remote authenticated users to affect availability

CVE-2012-0120 mysql: Unspecified vulnerability allows remote authenticated users to affect availability

CVE-2012-0484 mysql: Unspecified vulnerability allows remote authenticated users to affect confidentiality

CVE-2012-0485 mysql: Unspecified vulnerability allows remote authenticated users to affect availability

CVE-2012-0490 mysql: Unspecified vulnerability allows remote authenticated users to affect availability

CVE-2012-0492 mysql: Unspecified vulnerability allows remote authenticated users to affect availability

Alerts:
Red Hat RHSA-2012:0105-01 2012-02-08
CentOS CESA-2012:0105 2012-02-08
Fedora FEDORA-2012-0972 2012-02-08
Oracle ELSA-2012-0105 2012-02-09
Scientific Linux SL-mysq-20120209 2012-02-09
Fedora FEDORA-2012-0987 2012-02-12
Red Hat RHSA-2012:0127-01 2012-02-13
CentOS CESA-2012:0127 2012-02-14
Oracle ELSA-2012-0127 2012-02-14
Scientific Linux SL-mysq-20120214 2012-02-14
Debian DSA-2429-1 2012-03-07
Ubuntu USN-1397-1 2012-03-12
openSUSE openSUSE-SU-2012:0618-1 2012-05-14
openSUSE openSUSE-SU-2012:0619-1 2012-05-14
SUSE SUSE-SU-2012:0984-1 2012-08-13

Comments (none posted)

php: multiple vulnerabilities

Package(s):php5 CVE #(s):CVE-2011-4153 CVE-2012-0788 CVE-2012-0831
Created:February 10, 2012 Updated:February 28, 2013
Description: From the Ubuntu advisory:

It was discovered that PHP did not always check the return value of the zend_strndup function. This could allow a remote attacker to cause a denial of service. (CVE-2011-4153)

It was discovered that PHP did not properly enforce that PDORow objects could not be serialized and not be saved in a session. A remote attacker could use this to cause a denial of service via an application crash. (CVE-2012-0788)

It was discovered that PHP allowed the magic_quotes_gpc setting to be disabled remotely. This could allow a remote attacker to bypass restrictions that could prevent an SQL injection. (CVE-2012-0831)

Alerts:
Ubuntu USN-1358-1 2012-02-09
Debian DSA-2408-1 2012-02-13
Ubuntu USN-1358-2 2012-02-13
SUSE SUSE-SU-2012:0411-1 2012-03-24
openSUSE openSUSE-SU-2012:0426-1 2012-03-29
SUSE SUSE-SU-2012:0472-1 2012-04-06
SUSE SUSE-SU-2012:0496-1 2012-04-12
Mandriva MDVSA-2012:065 2012-04-27
Fedora FEDORA-2012-6907 2012-05-07
Fedora FEDORA-2012-6911 2012-05-07
Fedora FEDORA-2012-6907 2012-05-07
Fedora FEDORA-2012-6911 2012-05-07
Fedora FEDORA-2012-6907 2012-05-07
Fedora FEDORA-2012-6911 2012-05-07
Mandriva MDVSA-2012:071 2012-05-10
Red Hat RHSA-2012:1045-01 2012-06-27
Red Hat RHSA-2012:1046-01 2012-06-27
Red Hat RHSA-2012:1047-01 2012-06-27
CentOS CESA-2012:1045 2012-06-27
CentOS CESA-2012:1047 2012-06-27
Oracle ELSA-2012-1045 2012-06-28
Oracle ELSA-2012-1047 2012-06-28
Oracle ELSA-2012-1046 2012-06-30
Scientific Linux SL-php-20120705 2012-07-05
Scientific Linux SL-php5-20120705 2012-07-05
Scientific Linux SL-php-20120709 2012-07-09
CentOS CESA-2012:1046 2012-07-10
Gentoo 201209-03 2012-09-23
Red Hat RHSA-2013:0514-02 2013-02-21
Oracle ELSA-2013-0514 2013-02-28
Scientific Linux SL-php-20130228 2013-02-28
CentOS CESA-2013:0514 2013-03-09

Comments (none posted)

phpldapadmin: cross-site scripting

Package(s):phpldapadmin CVE #(s):CVE-2012-0834
Created:February 14, 2012 Updated:February 15, 2012
Description: From the CVE entry:

Cross-site scripting (XSS) vulnerability in lib/QueryRender.php in phpLDAPadmin 1.2.2 and earlier allows remote attackers to inject arbitrary web script or HTML via the base parameter in a query_engine action to cmd.php.

Alerts:
Fedora FEDORA-2012-1253 2012-02-14
Fedora FEDORA-2012-1267 2012-02-14
Mandriva MDVSA-2012:020 2012-02-15

Comments (none posted)

puppet: unintended access to resources

Package(s):Puppet CVE #(s):CVE-2011-0528
Created:February 14, 2012 Updated:February 15, 2012
Description: From the Ubuntu advisory:

It was discovered that Puppet would allow remote ralsh under certain circumstances. An attacker on an authenticated puppet node could exploit this to view or manipulate resources on other Puppet nodes.

Alerts:
Ubuntu USN-1365-1 2012-02-14

Comments (none posted)

samba: denial of service

Package(s):samba CVE #(s):CVE-2012-0817
Created:February 9, 2012 Updated:February 15, 2012
Description:

From the Red Hat bugzilla entry:

A memory leak leading to denial of service (smbd crash) was found in the way smbd daemon of the Samba suite performed management of file descriptors related to socket connections. A remote attacker could use this flaw to cause excessive CPU use, or, potentially denial of service via loop of incoming connections.

Alerts:
Fedora FEDORA-2012-1098 2012-02-08
SUSE SUSE-SU-2012:0502-1 2012-04-14
SUSE SUSE-SU-2012:0515-1 2012-04-17

Comments (none posted)

selinux-policy: policy enhancements

Package(s):selinux-policy CVE #(s):
Created:February 14, 2012 Updated:February 15, 2012
Description: From the Scientific Linux advisory: An incorrect SELinux policy prevented the qpidd service from starting. These selinux-policy packages contain updated SELinux rules, which allow the qpidd service to be started correctly.

With SELinux in enforcing mode, the ssh-keygen utility was prevented from access to various applications and thus could not be used to generate SSH keys for these programs. With this update, the "ssh_keygen_t" SELinux domain type has been implemented as unconfined, which ensures the ssh-keygen utility to work correctly.

Alerts:
Scientific Linux SL-seli-20120214 2012-02-14

Comments (none posted)

sysconfig: code execution

Package(s):sysconfig CVE #(s):CVE-2011-4182
Created:February 9, 2012 Updated:February 15, 2012
Description:

From the openSUSE advisory:

sysconfig hook script for NetworkManager did not properly quote shell meta characters when processing ESSIDs. Specially crafted network names could therefore lead to execution of shell code (CVE-2011-4182).

Alerts:
openSUSE openSUSE-SU-2012:0242-1 2012-02-09

Comments (none posted)

wireshark: multiple vulnerabilities

Package(s):wireshark CVE #(s):
Created:February 9, 2012 Updated:February 15, 2012
Description:

From the Mandriva advisory:

Multiple file parser and NULL pointer vulnerabilities including a RLC dissector buffer overflow was found and corrected in Wireshark.

Alerts:
Mandriva MDVSA-2012:015 2012-02-09

Comments (none posted)

xchat-ruby: null pointer dereference, remote DoS

Package(s):xchat-ruby CVE #(s):
Created:February 13, 2012 Updated:February 15, 2012
Description: From the Red Hat bugzilla:

In src/xchat-ruby.c functions

 static_ruby_custom_command_hook(char *word[], char *word_eol[], void *userdata)
 static_ruby_custom_server_hook(char *word[], char *word_eol[], void *userdata)

parameter 'word' used in a for cycle without break [1]
 for( i = 1; word[i][0] != '\0'; i++ )
The problem is word[PDIWORDS] always set to NULL by xchat. So if the input contains more words than PDIWORDS (32) [2], the NULL pointer will be dereferenced.

This bug remote triggerable over IRC networks if one or more ruby plugin uses hook_server().

Alerts:
Fedora FEDORA-2012-1334 2012-02-12
Fedora FEDORA-2012-1325 2012-02-12

Comments (none posted)

znc: denial of service

Package(s):znc CVE #(s):CVE-2012-0033
Created:February 10, 2012 Updated:February 15, 2012
Description: From the Red Hat bugzilla:

A denial of service flaw was reported in ZNC versions 0.200 and 0.202. A DCC RESUME received by znc can cause a crash in the bouncedcc module.

Alerts:
Fedora FEDORA-2012-0917 2012-02-10
Fedora FEDORA-2012-0921 2012-02-10
Fedora FEDORA-2012-0921 2012-02-10

Comments (none posted)

Page editor: Jake Edge

Kernel development

Brief items

Kernel release status

The current development kernel is 3.3-rc3, released on February 8. "No big surprises, which is just how I like it. About a third of the patches are in ARM, but the bulk of that is due to the removal of the unused DMA map code form the bcmring support. So no complaints."

Stable updates: 3.0.21, 3.2.6 and 2.6.32.57 were released on February 13 with a long list of important fixes.

For those still using the 2.6.27 kernel, 2.6.27.60 was released on February 12, quickly followed by 2.6.27.61 to fix the inevitable build error. There's lots of fixes that have gone in since 2.6.27.59 was released last April.

Comments (none posted)

Quotes of the week

-static inline void *kcalloc(size_t n, size_t size, gfp_t flags)
+static inline void *wtf_do_i_call_this(size_t n, size_t size, gfp_t flags)
 {
 	if (size != 0 && n > ULONG_MAX / size)
 		return NULL;
-	return __kmalloc(n * size, flags | __GFP_ZERO);
+	return __kmalloc(n * size, flags);
+}
+
+static inline void *kcalloc(size_t n, size_t size, gfp_t flags)
+{
+	return wtf_do_i_call_this(n, size, flags | __GFP_ZERO);
 }
-- Andrew Morton

I was thrilled a year ago at last to discover who Virginia is, celebrated in mm/memory.c and mm/page-writeback.c
-- Hugh Dickins

I'm sitting here wondering what you meant to type when you typed "ftrace pouch". I'm stumped! But you're not allowed to tell us - that would take all the fun out of it.
-- Andrew Morton

Comments (2 posted)

Btrfs: The Swiss army knife of storage (;login:)

The February 2012 issue of ;login: has a detailed overview of Btrfs [PDF] written by developer Josef Bacik. "Btrfs’s snapshotting is simple to use and understand. The snapshots will show up as normal directories under the snapshotted directory, and you can cd into it and walk around like in a normal directory. By default, all snapshots are writeable in Btrfs, but you can create read-only snapshots if you so choose. Read-only snapshots are great if you are just going to take a snapshot for a backup and then delete it once the backup completes. Writeable snapshots are handy because you can do things such as snapshot your file system before performing a system update; if the update breaks your system, you can reboot into the snapshot and use it like your normal file system."

Comments (14 posted)

Lima driver code for the Mali GPU released

The Lima driver project has released the code for its open source graphics driver supporting the Mali-200 and Mali-400 GPUs. "The aim of this driver is to finally bring all the advantages of open source software to ARM SoC graphics drivers. Currently, the sole availability of binary drivers is increasing development and maintenance overhead, while also reducing portability, compatibility and limiting choice. Anyone who has dealt with GPU support on ARM, be it for a linux with a GNU stack, or for an android, knows the pain of dealing with these binaries. Lima is going to solve this for you, but some time is needed still to get there." (Thanks to Paul Wise.)

Comments (9 posted)

Kernel development news

ABS: Android and the kernel mainline

By Jake Edge
February 15, 2012

On the first day of this year's Android Builders Summit, a panel was held to discuss the Android patches to the Linux kernel, including the progress on getting them upstream. The panel consisted of Zach Pfeffer from Linaro, Tim Bird from Sony, Arnd Bergmann of IBM/Linaro, and Greg Kroah-Hartman of the Linux Foundation (LF), with LWN executive editor Jonathan Corbet moderating. The overall feeling from the panel was that things with the Android kernel patches were proceeding apace—recent kernels can boot into an Android user space—but there is still work to be done. While I could not attend ABS this year, this report comes via the magic of streaming video.

Each of the panelists introduced themselves and connected themselves to Android in various ways. Pfeffer is the Android platform lead for Linaro and is responsible for creating Android builds for each of the member companies, Bird represents Sony as the architecture chair of the LF Consumer Electronics working group, Bergmann has recently been working on the cleanup and consolidation of the ARM subtree, and Kroah-Hartman maintains the staging tree where most of the Android code currently lives.

Corbet kicked off the discussion by noting that he had recently looked at the current Red Hat Enterprise Linux (RHEL) kernel, which includes more than 7600 patches on top of the mainline kernel. He also pointed out that the Fedora kernel carries a number of different patches that aren't likely to go upstream anytime soon (utrace, in particular). Given that, "why are we here?", why is Android (and its patches) treated differently than other distributions' kernels, he asked.

Kroah-Hartman said that the Android patches are only about 7000 lines of code and that some UART drivers are larger. But people care more about the Android patches because device makers and others have to pull down all those patches and apply them to get a mainline kernel working with Android. It is different from enterprise kernels, he said, because there are no real downstream users of the source code of those. Bergmann also pointed out that much of the change in the RHEL or Fedora kernels was for things like drivers which don't change the operating system core as some of the Android patches do.

Pfeffer noted that in the past the kernel developers were seen as "the rebel alliance", but that now the Android developers have assumed that role to some extent. Bird pointed out that part of the problem is that due to the success of Android, the kernels for board support packages (BSPs) are being built with Android kernels, rather than kernel.org kernels. That essentially causes a split in the community.

The Android patches are largely in the mainline at this point (in staging), Kroah-Hartman said, except for the wakelocks code. The 3.3-rc3 kernel can boot an Android user space, but lacks the power management features that wakelocks provide, so battery life is poor. Bergmann said that he had seen a demo of Android running on a mainline kernel, and there is "still a long way to go".

One area that needs attention, Bergmann said, is the user-space interfaces of some of the Android features. Those may not be what the kernel developers want to support long-term, so they need to be addressed before the Android patches make their way out of staging and those interfaces become part of the kernel ABI.

The PMEM patches, which provide a means to reserve contiguous memory and to share buffers between the kernel and user space, was the next topic. Corbet noted that PMEM had been in and out of staging twice, but had never been merged. Since then, Android has moved on and is not using PMEM any longer. So, was it the right move not to merge PMEM, he asked.

The panel seemed in agreement that it was right not to merge those patches, with Pfeffer noting that they were simply an expedient to get products out the door. As ARM matures, he said, common usage models will come about, rather than various quick fixes. Kroah-Hartman pointed out that the memory management kernel developers told the PMEM developers "how to do it right", but that no one ever did that work, which is "a problem that we've had forever". Bird agreed with Pfeffer, saying that he is pushing to get things into the mainline, but that if there is pushback, "that's fine", as there are sometimes "quick and dirty" things done to ship products.

Corbet pursued that topic with a mention of the contiguous memory allocator (CMA) that is being pushed by Samsung and is aimed at Android. But he noted that Android itself has moved from PMEM to the ION memory allocator, which duplicates some of the CMA functionality while adding another user-space interface. What should be done about ION, he asked.

Android is not "pushing" ION, Pfeffer said, and if the kernel community doesn't want it, it shouldn't take it. There was a need for a solution that didn't exist in the mainline, so Android went ahead with ION. It may not necessarily be easy to work with all of the Android kernel patches, he said, because of the time pressures it is operating under. In the end, ION could be handled much like PMEM was, he said.

But Bergmann pointed out that ION could be integrated with CMA and the DMA buffer sharing work that are getting close to the mainline. ION and the soon-to-exist mainline solutions are not mutually exclusive, he said. Pfeffer said that the "entire room" doesn't really care which solution is chosen, they just want something that has been integrated and tested. That may be ION now, and something else down the road.

In a sense, this is a result of the longstanding conflict between the needs of the embedded world vs. those of the rest of kernel, Corbet posited. But Kroah-Hartman disagreed, saying that the enterprise distributions have the same problems, just on a different timescale. Those distributions need to ship, often well before the code is upstream. Embedded isn't really different, they just need to get their code upstream as well, he said.

One place where it is different, though, is that in the embedded world things may move from hardware to software at a relatively rapid pace, Pfeffer said. That means that a driver written for hardware JPEG decoding may really only be needed for one six-month product cycle, so that driver really doesn't need to go upstream. Because of that, Bergmann said, many of those drivers are designed to stay out of the mainline. Bird echoed that, saying that sometimes a "fatalistic approach" to kernel development is the pragmatic choice. Even for long-lived code, if there is no hope that it can go upstream, developers will just try to focus on making it maintainable out of tree.

For a long time, the trajectory of Android code was heading away from the mainline, Pfeffer said, but that has started to correct itself. Though the kernel needs more maintainers so that code can get upstream faster, he said. Bergmann agreed that more maintainers would help, but the work needs to be done in a more organized fashion with an eye toward getting the user-space interfaces right.

Bird said that he doesn't expect there to be a need for another panel of this sort because the problem is solving itself at this point. Kroah-Hartman more or less agreed, noting that the Android problems are "nothing new" and that the kernel community has been solving these kinds of problems for 20 years.

With luck, the Android developers won't be adding much more to the core, Corbet said, but what about drivers? CyanogenMod is trying to get Ice Cream Sandwich (Android 4.0) in the hands of its users, but is running into problems with getting drivers from some vendors. What can be done to solve that problem?

Kroah-Hartman noted that things are getting better in that department, but that some companies care about getting their drivers into the mainline, while others don't. The latter don't realize that it will save them money in the long run. He is often talking with various companies, so if there are specific instances of problem drivers, he wants to know about them.

But kernel drivers are not the whole problem, Pfeffer said. In the graphics and video realms, the line between the kernel and user space has been "blown away", he said. There is now firmware, kernel interfaces, binary blobs, and user-space interfaces to do graphics which are all released in lockstep, and often all as binary blobs, which is not a good thing. It isn't an engineering issue, but a legal one, he said. Google's engineers do not want binary blobs, he said, and have been pushing back on vendors for things like the Nexus line of phones.

Bergmann also pointed to the open source driver for the Mali GPU as an indicator of the direction where things are headed. If the other graphics vendors don't get their act together with respect to free drivers, they will not survive, he said.

With that, the 45-minute slot had expired. The upshot seems to be that mainline kernel support for Android is moving along reasonably well. It won't be too long before it will be possible to run Android on a mainline kernel while still maintaining some reasonable battery life. Beyond that, though, the process is working more or less as it should. The out-of-tree Android patches were just another in a long line of hurdles that the kernel community has overcome.

Comments (none posted)

Trusting the hardware too much

By Jonathan Corbet
February 15, 2012
Anybody who does low-level kernel programming for long enough learns that the hardware is not their friend. Expecting the hardware to be nice is a recipe for disaster; instead, one must treat the hardware as if it were a clever and willful dog. With some effort, it can be made to perform impressive tricks, but, given a moment of inattention, it will snag your dinner from the grill and hide under the couch. The good news is that Linux kernel developers understand the nature of their relationship with the hardware and take great care not to trust it too far. Or, at least, that is what we would like to think.

Consider this snippet of code from drivers/char/hpet.c:

	do {
		m = read_counter(&hpet->hpet_mc);
		write_counter(t + m + hpetp->hp_delta, &timer->hpet_compare);
	} while (i++, (m - start) < count);

Here, read_counter() is a thin macro wrapper around readl(). The driver is writing to the timer compare register in a loop, assuming that the "main counter" value read from the HPET will eventually exceed the threshold value. Almost always, that is exactly what happens. But if the HPET ever goes a little bit weird and stops returning something meaningful when the main counter is read, the above code could easily turn into an infinite loop. The kernel is trusting the hardware to be rational, but the hardware may not choose to live up to that expectation.

"Usbmuxd" is a daemon which facilitates communications with various Apple iDevices. Recently, this patch to usbmuxd was recognized to be a security fix for a bug eventually designated as CVE-2012-0065. In short, this daemon would read a serial number string from the device and copy it into an internal array without checking its length. Exploiting this vulnerability is not easy - it requires the ability to plug in a USB device that has been designed to overflow that particular buffer with something interesting. But it is a vulnerability, and it is worth noting that an increasing number of USB devices are really just Linux systems using the "USB gadget" code; creating that malicious device would not be hard to do. So this vulnerability could be interesting to the "leave a malicious USB stick in the parking lot" school of attacker.

This bug, too, is the result of trusting the hardware. As seen here, the hardware could be overtly evil. In other cases, it is just subject to electrical wear, power spikes, cosmic rays, and the varying skills of those who write the firmware - closed source which is never reviewed by anybody. Even in a world where price pressures didn't mandate that each component must cost as little as possible, hardware bugs would be a problem.

By now, the lesson should be clear: driver developers should always regard their hardware with extreme suspicion and take nothing for granted. The problem is that even highly diligent developers (and reviewers) can easily let this kind of bug slip by. In almost all cases, the driver appears to work just fine without the extra sanity checks; the hardware plays along most of the time, after all, until that especially inopportune moment arrives. Sometimes the developer sees the resulting failure, resulting in that "oh, yeah, I have to make sure that the hardware doesn't flake there" moment that is discouragingly common in driver development. Other times, some far away user sees strange problems and nobody really knows why.

What would be nice would a way for the computer to tell developers when they are being overly trusting of the hardware; then it might be possible to skip the "tracking down the weird problem" experience. As it happens, such a way exists in the form of a static analysis tool called Carburizer, developed by Asim Kadav, Matthew J. Renzelmann and Michael M. Swift. Those wanting a lot of information about this tool can find it in this one-page poster [PDF], this ACM Symposium on Operating Systems Principles (SOSP) paper [PDF], or in this rather over-the-top web site.

In short: Carburizer analyzes kernel code, looking for insufficiently robust dealings with the hardware. Its key strength at the moment appears to be the identification of possible infinite loops - loops whose exit condition depends solely on a value obtained from the hardware. There are, it seems, over 1000 such loops in the 3.2.1 kernel. The tool also looks for cases where unchecked values from hardware are used to index arrays or are used directly as pointers, though the false-positive rate seems to be higher for these checks. The result is an output file as linked above, from which developers can go and investigate.

Naturally enough, the tool shows some signs of its academic origins. It is written in Ocaml and requires some modifications to the kernel source tree before it can be run. Carburizer also requires that multi-file drivers be merged into one big file, with the result that the line numbers in the resulting diagnostics do not correspond to the source tree everybody else has. That may be part of why, despite a positive response to a posting of the tool on kernel-janitors in January, 2011, little in the way of actual fixes seems to have resulted. Or it may just be that, so far, these results have only been seen by a relatively small group of developers.

Interestingly, Carburizer can propose fixes of its own. These include putting time limits into potentially infinite loops and adding bounds checks to suspect array references. While it is at it, Carburizer fixes up seemingly unnecessary panic() calls and adds logging code to places where, it thinks, the driver neglects to report a hardware failure. With a separate runtime module, it can even deal with stuck interrupts (the driver is forced into a polling mode) and more. The resulting code has not been posted for consideration, which is not entirely surprising; the fixes are, necessarily, of a highly conservative "don't break the driver" nature. Such fixes are almost certain not to be what a human would write after looking at the code. But the tool is open source, so interested developers can run it themselves to see what it would do.

Meanwhile, even without automatic fixes, these results seem worthy of some attention. Computers can be far better than humans at finding many classes of bugs; when computers have been used in that role, some types of bugs have nearly disappeared from the kernel. Maybe someday we'll have a version of Carburizer that can be folded into a tool like checkpatch; for now, though, we'll have to look at its complaints about our code separately and decide what action is needed.

Comments (11 posted)

Linux support for ARM big.LITTLE

February 15, 2012

This article was contributed by Nicolas Pitre

ARM Ltd recently announced the big.LITTLE architecture consisting of a twist on the SMP systems that we've all gotten accustomed to. Instead of having a bunch of identical CPU cores put together in a system, the big.LITTLE architecture is effectively pushing the concept further by pulling two different SMP systems together: one being a set of "big" and fast processors, the other one consisting of "little" and power-efficient processors.

In practice this means having a cluster of Cortex-A15 cores, a cluster of Cortex-A7 cores, and ensuring cache coherency between them. The advantage of such an arrangement is that it allows for significant power saving when processes that don't require the full performance of the Cortex-A15 are executed on the Cortex-A7 instead. This way, non-interactive background operation, or streaming multimedia decoding, can be run on the A7 cluster for power efficiency, while sudden screen refreshes and similar bursty operations can be run on the A15 cluster to improve responsiveness and interactivity.

Then, how to support this in Linux? This is not as trivial as it may seem initially. Let's suppose we have a system comprising a cluster of four A15 cores and a cluster of four A7 cores. The naive approach would suggest making the eight cores visible to the kernel and letting the scheduler do its job just like with any other SMP system. But here's the catch: SMP means Symmetric Multi-Processing, and in the big.LITTLE case the cores aren't symmetric between clusters.

The Linux scheduler expects all available CPUs to have the same performance characteristics. For example, there are provisions in the scheduler to deal with things like hyperthreading, but this is still an attribute which is normally available on all CPUs in a given system. Here we're purposely putting together a couple of CPUs with significant performance/power characteristic discrepancies in the same system, and we expect the kernel to make the optimal usage of them at all times, considering that we want to get the best user experience together with the lowest possible battery consumption.

So, what should be done? Many questions come to mind:

  • Is it OK to reserve the A15 cluster just for interactive tasks and the A7 cluster for background tasks?
  • What if the interactive tasks are sufficiently light to be processed by the small cores at all times?
  • What about those background tasks that the user interface is actually waiting after?
  • How to determine if a task using 100% CPU on a small core should be migrated to a fast core instead, or left on the small core because it is not critical enough to justify the increased power usage?
  • Should the scheduler auto-tune its behavior, or should user-space policies influence it?
  • If the latter, what would the interface look like to be useful and sufficiently future-proof?

Linaro started an initiative during the most recent Linaro Connect to investigate this problem. It will require a high degree of collaboration with the upstream scheduler maintainers and a good amount of discussion. And given past history, we know that scheduler changes cannot happen overnight... unless your name is Ingo that is. Therefore, it is safe to assume that this will take a significant amount of time.

Silicon vendors and portable device makers are not going to wait though. Chips implementing the big.LITTLE architecture will appear on the market in one form or another, way before a full heterogeneous multi-processor aware scheduler is available. An interim solution is therefore needed soon. So let's put aside the scheduler for the time being.

ARM Ltd has produced a prototype software solution consisting of a small hypervisor using the virtualization extensions of the Cortex-A15 and Cortex-A7 to make both clusters appear to the underlying operating system as if there was only one Cortex-A15 cluster. Because the cores within a given cluster are still symmetric, all the assumptions built into the current scheduler still hold. With a single call, the hypervisor can atomically suspend execution of the whole system, migrate the CPU states from one cluster to the other, and resume system execution on the other cluster without the underlying operating system being aware of the change; just as if nothing has happened.

Taking the example above, Linux would see only four Cortex-A15 CPUs at all times. When a switch is initiated, the registers for each of the 4 CPUs in cluster A are transferred to corresponding CPUs in cluster B, interrupts are rerouted to the CPUs in cluster B, then CPUs in cluster B are resumed exactly where cluster A was interrupted, and, finally, the CPUs in cluster A are powered off. And vice versa for switching back to the original cluster. Therefore, if there are eight CPU cores in the system, only four of them are visible to the operating system at all times. The only visible difference is the observable execution speed, and of course the corresponding change in power consumption when a cluster switch occurs. Some latency is implied by the actual switch of course, but that should be very small and imperceptible by the user.

This solution has advantages such as providing a mechanism which should work for any operating system targeting a Cortex-A15 without modifications to that operating system. It is therefore OS-independent and easy to integrate. However, it brings a certain level of complexity such as the need to virtualize all the differences between the A15 and the A7. While those CPU cores are functionally equivalent, they may differ in implementation details such as cache topology. That would force every cache maintenance operation to be trapped by the hypervisor and translated into equivalent operations on the actual CPU core when the running core is not the one that the operating system thinks is running.

Another disadvantage is the overhead of saving and restoring the full CPU state because, by virtue of being OS-independent, the hypervisor code may not know what part of the CPU is actually being actively used by the OS. The hypervisor could trap everything to be able to know what is being touched allowing partial context transfers, but that would be yet more complexity for a dubious gain. After all, the kernel already knows what is being used in the CPU, and it can deal with differing cache topologies natively, etc. So why not implement this switcher support directly in the kernel given that we can modify Linux and do better?

In fact that's exactly what we are doing i.e. take the ARM Ltd BSD licensed switcher code and use it as a reference to actually put the switcher functionality directly in the kernel. This way, we can get away with much less support from the hypervisor code and improve switching performances by not having to trap any cache maintenance instructions, by limiting the CPU context transfer only to the minimum set of active registers, and by sharing the same address space with the kernel.

We can implement this switcher by modeling its functionality as a CPU speed change, and therefore expose it via a cpufreq driver. This way, contrary to the reference code from ARM Ltd which is limited to a whole cluster switch, we can easily pair each of the A15 cores with one of the A7 cores, and have each of those CPU pairs appear as a single pseudo CPU with the ability to change its performance level via cpufreq. And because the cpufreq governors are already available and understood by existing distributions, including Android, we therefore have a straightforward solution with a fast time-to-market for the big.LITTLE architecture that shouldn't cause any controversy.

Obviously the "switcher" as we call it is not replacing the ultimate goal of exposing all the cores to the kernel and letting the scheduler make the right decisions. But it is nevertheless a nice self-contained interim solution that will allow pretty good usage of the big.LITTLE architecture while removing the pressure to come up with scheduler changes quickly.

Comments (60 posted)

Patches and updates

Kernel trees

Core kernel code

Development tools

Device drivers

Filesystems and block I/O

Memory management

Architecture-specific

Security-related

Virtualization and containers

Miscellaneous

Page editor: Jonathan Corbet

Distributions

A chat with new Fedora project leader Robyn Bergeron

February 15, 2012

This article was contributed by Bruce Byfield

Robyn Bergeron, the new Fedora project leader (FPL), described herself on the OpenStack wiki as an "all-around untechnical person." Given her background, the description is too modest, but it does emphasize that she brings to her new position perspectives that are different from that of her predecessors — in particular, that of a industry analyst. Although Bergeron studied economics in college, her first job combined duties on a help desk with part-time system administration. She later became a business analyst at Intel, focusing on the embedded chip vertical markets.

For several years, she was a full-time mother, but "I started missing my technical roots," she said. "I started getting involved with various open-sourcey things: I did the editing for papers for the Linux Symposium, and then I sort of stumbled into Fedora Marketing, mid-to-late 2009. From there, I sort of steadily progressed." Hired in November 2010 by Red Hat as Fedora Program Manager to oversee the features of each release, she has also been the Fedora Marketing team lead, and a facilitator for the Fedora Cloud SIG.

With this background, her appointment by Red Hat was "not a shock," she said, to either her or the Fedora community. Referring to Jared Smith, the previous FPL, she added:

I was fairly well-positioned to know what Jared's roles and duties were, because he and I developed a lot of the scheduling to keep more track of what the FPL does. I was pretty familiar with all that stuff, so I was an easy person to fit into the role. I like to use the phrase 'recovering sys-admin,' but I think that combined with the analytical things I've done, I bring a different perspective to the role.

Setting technical priorities and directions

Staying true to her analyst perspective, Bergeron said, "One of the first things I'd like to do is get a handle on statistics. If you don't have some specific statistical data that you know is valid, it's very hard to choose a direction in which to go." Asked to elaborate on the statistics that interest her, Bergeron suggested:

Number of users, and where they are downloading from: are we very strong in specific regions, do we not have support in other regions? Are we tapering off? If we're seeing significant growth, is that attributable to the outreach [the Fedora Ambassadors] are doing? Can we make that a repeatable process and do it elsewhere?"

In addition, she would like to better track the personal goals of members of the Fedora Board and other active project participants. That is, she would like project members to be able to answer questions like: "What are the milestones you need to get there? What are the data points that you want to hit so we're being successful? I think people feel better when they can concretely see that they're meeting milestones and progressing somewhere."

This kind of tracking, Bergeron suggested, is becoming increasingly important as Fedora moves away from being focused on the desktop and server markets and starts to enter the mobile markets. "A lot of [my role] is finding what the big interests are people have in Fedora," she said. "I mean, what do they want to do with it?"

Despite this caution, Bergeron has already identified some of the directions in which she would like to see Fedora develop. Although she describes Fedora's support for the ARM platform as "one of the areas where I'm still learning a lot," she already recognizes it as an area where the Fedora community would like to see more activity. "I know for sure, particularly based on the number of people who sat in on some of the sessions at FUDCon that we have a tremendous lot of people who are extremely, extremely interested in the ARM platform who are diligently getting it ready to work, and hoping that everything will be set for Fedora 17 to have an ARM release."

Another priority is support for cloud computing. In Fedora 17, Bergeron said:

We're expecting to have pretty much every major infrastructure and service platform included. We're going to have OpenStack, CloudStack. We have Aeolus, OpenNebula — you name it, we pretty much have it. We've gone from having really outdated, old, yucky stuff to the point where we actually have [multi-platform support] built into our release process. We're also looking at adding a couple of new things, like images that people can use for their own personal virtualization / cloud use.

In addition, Bergeron remains interested in making Btrfs the default filesystem for Fedora. However, contrary to previous announcements, that change will not happen in Fedora 17. According to the ticket in the Fedora bug-tracking system, neither Anaconda, the Fedora installer, or Kickstart, the automatic installer, supports manual repartitioning with Btrfs, and with Anaconda scheduled for a rewrite for Fedora 18, a change of plans seems only logical. "It was a question of whether we could support it in the way we would need to if it's going to be the default filesystem," Bergeron explained.

In general, Bergeron professed to be generally satisfied with Fedora's state. Although complaints about overall quality erupt periodically on the user mailing list, Bergeron pointed out Fedora's well-defined release criteria and process and active QA team as proof that Fedora's quality remains high.

Commenting on the perception that Fedora's quality is compromised by its tradition of introducing new features, Bergeron said:

Fedora for what it is -- essentially, a community supported product -- does a very good job. We have excellent release criteria, specific to desktop types, processor types, for alpha, beta and final [releases], and an amazing QA team and members in the community who help out. And in recent releases, we've added Auto QA and automatic bug reporting. Some of those things have really helped to improve the quality of where we're at right now.

One of the things that people really like about Fedora is that they're basically getting a preview of what's going to be in Red Hat Enterprise Linux right down the road. It's putting them ahead of the curve. [And] I know plenty of people who are ordinary daily users, and they're just as happy as developers doing things I couldn't possibly explain to people.

Setting policy

Inevitably, some of the media coverage of Bergeron's appointment highlighted that she was the first woman to be FPL. Similarly, comments on the reporting often focused on whether this milestone mattered. However, Bergeron herself is non-committal on the topic:

I'm happy for people to recognize it, but it's certainly not my platform. It's not anything I'm using to my advantage or disadvantage. The most I can really say is that it's progress for Fedora. But I'm not here as FPL to promote women. I know that some people have had difficulties being women in open source, but I've never had a single problem. No barriers — everything has been great for me. Fedora's been a wonderful family. I'm here because I've done good things, and that's the end of it.

Asked if she has any plans to increase women's participation in Fedora, her reply was, "I have plans to get more contributors involved" — her emphasis suggesting yet again that she is not much interested in the subject.

By contrast, Bergeron sounded far more enthusiastic about using Fedora Ambassadors to increase contributors in general. She suggested continuing the practice of targeting regions for attention by Ambassadors. She also suggested specifically targeting potential contributors with design and programming skills, and taking another look at how easy joining Fedora really is, and how newcomers can become active more quickly.

Still another policy Bergeron plans to put in place is to start the process of preparing potential candidates for her eventual replacement. "Part of being a leader is thinking of who might follow you from Day One," she said. "It's part of leadership, picking out people you think might be good and encouraging them to step up and take new tasks, and seeing how they might perform in those areas."

However, one area that Bergeron has no plans for changes is Red Hat's appointment of the FPL, which is done with little input from the Fedora board or community. Outsiders often criticize the lack of community control and input in the appointment of the FPL, some suggesting that the process proves that Fedora is not a true community distribution, but still controlled by Red Hat. But when the question came up, Bergeron said simply, "No one in the Fedora community has come out screaming that it's the wrong way to do it. I think it's always easy from the outside to say that's the wrong way, but so long as the community is comfortable with it, that's an okay thing to do."

Settling in

When LWN talked to Bergeron, she was obviously still settling into her new role. However, she characterized this period of transition as a time to evaluate:

Any time you take on a new role, it's a good time to step back and look at your role through a new lens. Historically, that's what all the FPLs have done before me, to step back and make sure that they're on the same page as other people. I'm pretty sure that all my predecessors were very technical, while most of my expertise is in written communications and marketing — although I can certainly do plenty of technical things on my own. I also tend to be more whimsical in my communication than some of the other folk. But that's part of being FPL, helping people to become engaged in different ways, to keep things fresh and new for them.

As though to emphasize her whimsy, Bergeron concluded the conversation with, "I'm happy to be here. And I love hot dogs." She is referring, of course, to Fedora 17's code name, Beefy Miracle, but the comment hints that whimsy might, as she promised, be yet another aspect of her leadership. At the same time, the comment leaves no doubt of her familiarity with the distribution she is now leading.

Comments (3 posted)

Brief items

Distribution quotes of the week

Last but not least, I’m also thankful for Red Hat, and their continued support on behalf of Fedora, and for the great trust they place in the Fedora community. I could go on and on about the relationship between Red Hat and Fedora, but let me just say that I’m thankful for Red Hat’s continued efforts to do the right thing and to practice what it preaches about open source communities. During my tenure at FPL, I never once felt pressured by Red Hat to do anything that wasn’t in the community’s best interest, and I think that says volumes about a corporate sponsor.
-- Jared Smith

Being FPL [Fedora Project Leader] is sort of like landing the part of The Doctor in Doctor Who. Each FPL brings a different personality to the role, and each FPL has their own particular talents. Also, the job isn't held too long by any one person, as the FPL usually goes on to new adventures after a few years. (Red Hat says there's no set tenure for an FPL, but it's usually two or three years since Max Spevack held the job during the Fedora 5 through 9 releases.) Sadly, no sonic screwdrivers or time travel are involved.
-- Joe 'Zonker' Brockmeier (by way of Linux.com)

Technology generally suffers by something like the uncertainty principle: you can have everything well tested and ultra-stable, or you can have all the features and support for new hardware. But you cannot have both. While Fedora is something different to all of us, I think one thing is clear: that Fedora should have things First, that's our motto, and that means that not everything is as well tested as it is in RHEL or CentOS. Accepting this means that we will always have a few hiccups before things have stabilized perfectly. It's a necessary part of the game, and it won't change in the future either. As long as we decide that Fedora is where things should be available first this will stay the same.

You can't have a pony and eat it too.

-- Lennart Poettering

Comments (2 posted)

End of Life for Debian GNU/Linux 5.0

Debian 5.0 "lenny" has reached its end of supported life. "The Debian project released Debian GNU/Linux 6.0 alias "Squeeze" on the 6th of February 2011. Users and distributors have been given a one-year timeframe to upgrade their old installations to the current stable release. Hence, the security support for the old release of 5.0 ended on the 6th of February 2012 as previously announced."

Comments (none posted)

NetBSD 5.1.2 released

NetBSD 5.1.2 has been released. "NetBSD 5.1.2 is the second critical/security update of the NetBSD 5.1 release branch. It represents a selected subset of fixes deemed critical for security or stability reasons. All users are encouraged to upgrade."

Comments (none posted)

Scientific Linux 4.x End Of Life Notice

Support for Scientific Linux 4.x will end later this month. "Anyone still running production workloads on Scientific Linux 4 are advised to begin upgrading to Scientific Linux 5 or 6. Upstream recommends a reinstall and not an upgrade. Please be advised that we also believe that a clean reinstall is the preferred method for moving from Scientific Linux 4 to a newer version."

Full Story (comments: none)

Newsletters and articles of interest

Distribution newsletters

Comments (none posted)

CrunchBang 10 update split into two editions (The H)

The H takes a look at the latest release of CrunchBang, which is available in "stable" and "backported" editions. "The stable edition ships with Debian's 2.6.32 stable kernel and X.org 7.5, while the backported version includes the more recent Linux 3.2 kernel and version 7.6 of X.org. The backported edition also automatically tracks any packages that enter the Debian backports repository; both versions of CrunchBang 10 R20120207 use backported versions of Iceweasel 10, the re-branded version of Firefox for Debian, and the Geany text editor, specifically Geany 0.20. The new 32-bit images also ship with the 686 kernels instead of the 486 kernels as, [Philip] Newborough says, "any system that cannot run the 686 flavour kernel is going to struggle to run #! at all"."

Comments (none posted)

Hall: A new way to Jam

Michael Hall looks forward to the next Ubuntu Global Jam, March 2-4, 2012. Jams are organized by Ubuntu Local Communities (LoCos) where like-minded souls can work together to improve Ubuntu. "Every cycle we help people organize their jams, and suggest the same generic topics: Bug triaging, packaging, translations, documentation, testing, etc. This time, in addition to these topics, we will be reaching out to the various teams both in Canonical and the Community, and picking some very specific activities that will directly help them make the Precise Pangolin the best release of Ubuntu ever."

Comments (none posted)

Shuttleworth: Remixing Ubuntu for the Enterprise Desktop

Mark Shuttleworth introduces the Ubuntu Business Desktop Remix. "This remix takes the most common changes we’ve observed among institutional users and bundles them into one CD which can be installed directly or used as a basis for further customization. Before anyone gets all worked up and conspiratorial: everything in the remix is available from the standard Software Centre. Packages out, packages in. No secret sauce for customers only; we’re not creating a RHEL, we already have an enterprise-quality release cadence called LTS and we like it just the way it is. This is a convenience for anyone who wants it. Having a common starting point, or booting straight into a business-oriented image makes it easier for institutional users to evaluate Ubuntu Desktop for their specific needs."

Comments (none posted)

Celebrating SUSE’s 20 Years Of Linux Love (TechWeek Europe)

TechWeek Europe covers SUSE's 20th anniversary. "SUSE plans to roll out information and activities highlighting how the company has evolved from its early beginnings in the open source industry, to forging partnerships with some of the world’s leading technology vendors to deliver innovation, investment protection and enterprise-quality software infrastructure to a generation of customers."

Comments (none posted)

Page editor: Rebecca Sobol

Development

Radio station management with Airtime

February 15, 2012

This article was contributed by Nathan Willis

Audio broadcasters gained a valuable tool in late January with the 2.0 release of Airtime, a Linux-based radio station management suite. Although it started off targeting independent over-the-air news stations, Airtime has developed into a tool that can handle recording and programming streams delivered over the Internet, too. The new release adds more integration with online services of interest to broadcasters, as well as streamlining the configuration and workflow of running a broadcast service.

What is Airtime?

Airtime is developed by Sourcefabric, a Prague-based non-profit that produces free software tools for independent media. Its other projects include news-oriented content management and publishing systems, and a recently launched book publishing platform. The group started in 1998 as the electronic media wing of the Media Development Loan Fund, a charity chartered to support "independent news outlets in countries with a history of media oppression," before spinning off on its own in 2010.

Sourcefabric's origins have impacted its software projects in several key ways, however. For example, all of the products are built with internationalization and multilingual-output (often including simultaneous publication in several languages) from the start, which is not true of every CMS. But with Airtime, the original mandate — to develop station management software for radio broadcasters under oppression — resulted in a web-based design that allows users to configure and program broadcasting equipment from remote locations, even across national borders.

In practice, Airtime generates audio streams using the Liquidsoap stream-mixing framework, and can output the results simultaneously to Icecast or Shoutcast servers (as MP3 and/or Vorbis) or through a sound card connected to traditional over-the-air broadcasting equipment. It supports several audio source types, including a library of recorded files (which are indexed by PostgreSQL and may be stored in a remote location), live studio audio that is captured by Ecasound, and "playout" content mixed in a variety of ways by the Mixxx DJing application. The audio features include fade-in/fade-out, cue points, and automatic cutoff when a program reaches its scheduled end.

[Calendar view]

The station management features include a calendar-like system for programming shows, ads, and other audio, complete with user-configurable recurrence and re-broadcast settings. The programming interface allows drag-and-drop reordering of the schedule and of tracks within a given program, and full metadata searching through the station library. Individual user accounts can be configured to give producers and staff access to program only their own shows, and administrators can monitor station status status and resources remotely. The media management component automatically imports and indexes new content, so staff can pre-record shows and drop them into the central storage location, where Airtime will pick them up for later playback.

Although Airtime itself is a management interface, the project also includes jQuery widgets that stations can add to their public-facing web sites to display information about the current on-air content and schedule information for the future.

Airtime is Linux-only, and while the project only makes official, packaged releases for Debian and Ubuntu, users of other distributions can download the source code and should be able to install it using the bundled installation scripts. In addition to Liquidsoap, Ecasound, and PostgreSQL mentioned above, Airtime depends on a variety of sound packages, although nothing too out-of-the-ordinary (assuming you do not count Liquidsoap's OCaml underpinnings as extraordinary). The code itself is written mostly in PHP, and is designed to work with Apache.

New in 2

The last major Airtime release (1.9) was in August of 2011. The project has been adding new features at a measured pace, so Airtime 2.0 is not a radical departure. However, it does implement some changes that can affect users and station administrators.

The most prominent is the ability to deliver output to up to three separate Icecast/Shoutcast streams simultaneously, potentially on three separate streaming servers. This allows stations to offer multiple bitrates, or to provide separate MP3 and Vorbis streams for listeners who prefer one or the other (although the limitation to three streams seems to be an arbitrary decision). A related feature is the ability to automatically upload clips or full programs to a station's SoundCloud account for non-live access from directly within the Airtime interface. Bulk uploads are supported, as are re-uploads, and complete control over the metadata and sharing settings of files.

A few lower-level improvements are potentially important to server administrators. 2.0 now supports PulseAudio as a sound server (in addition to ALSA, OSS, libao, and PortAudio), thus removing the need for administrators to manually uninstall PulseAudio, which was an increasingly tricky proposition once PulseAudio became the default sound server in common distributions.

The "media monitor" has also been enhanced in the new release. It is the component responsible for watching designated storage directories for new content and indexing added files. Previous releases failed to handle some common scenarios, such as renaming directories, and could occasionally attempt to index a new file while it was still being copied into storage, thus corrupting the index data. There is new error-checking to prevent to users from inadvertently editing the same program simultaneously, which could also result in undefined behavior.

Many more of the improvements in the new release fall under the banner of simplifying station management through the web front-end. This is in keeping with the project's stated focus to "reduce the time and effort station managers and DJs spent on behind-the-scenes work," and most of the changes are said to have originated in feedback from existing Airtime users.

[Playlist builder]

The changes include a simpler interface to the playlist builder, a more configurable calendar/schedule editor that remembers a user's view settings between visits, and the ability to "live preview" a program directly from the browser (in previous releases, previewing a program from the web required using an auxiliary application such as VLC). There are some security-hardening fixes as well (such as input validation and a reCAPTCHA option that is triggered when there is a series of failed login attempts), and more settings have been exposed in the web frontend that previously required editing .htaccess or php.ini. Finally, there are new widgets in the administration interface to monitor disk space usage and service status, and theme-able HTTP error pages.

Stay tuned

Sourcefabric lists an assortment of real radio stations using Airtime on its "Who's Using" page; they are scattered around Europe, Africa, and Asia. Some are commercial stations, others are community broadcasters or non-profits. Unfortunately, if you do not happen to live near one of the FM transmitters, your only option for listening to Airtime programming "live" is through one of the Icecast/Shoutcast feeds.

Anybody contemplating their own Airtime deployment has one other new option, though. Alongside the debut of the 2.0 code, Sourcefabric announced the availability of "Airtime Pro," a hosting service that offers Airtime in a variety of month-to-month plans. Naturally, this service is geared for Internet streaming and not AM or FM broadcasting, but for many users that may suffice.

Sourcefabric has offered customization services and support packages to commercial users of its products in years past; now that it is an independent organization it is presumably responsible for finding sustainable revenue streams. Given the project's commitment to "free as in freedom", hosted services are preferable to offering the software as open-core or another business model.

The project has an extensive roadmap for Airtime, hinting at more features and eventually a REST API. Airtime may only account for a fraction of a percent of the all the active radio stations on the globe, but it is a field currently dominated by expensive, proprietary software solutions — which, if nothing else, means the project has huge potential for growth.

Comments (3 posted)

Brief items

Quotes of the week

Keeping in mind that I want movable windows initially automatically placed in a tiled fashion, not a tiled straightjacket, yes, software could in principle do what I want. And Gnome used to. But if Gnome's new design paradigm is "one window at a time is enough for anyone!", I cannot realistically foresee a happy relationship with Gnome.
-- Paul McKenney (in the comments)

Grub2 is not the future. Grub2 is an unfortunate accident on the way.
-- Alan Cox

Comments (10 posted)

LibreOffice 3.5 released

The Document Foundation has announced LibreOffice 3.5. Some of the new features in this release include: a built-in grammar checker for English and several other languages (Writer); an improved importer of custom shapes and Smart Art from PPT/PPTX and a feature for embedding multimedia/colour palettes into ODF documents (Draw); a new multi-line input area and new Calc functions conforming to the ODF OpenFormula specifications (Calc); and a new integrated PostgreSQL native driver (Base).

Full Story (comments: 26)

PyPy 1.8 released

Version 1.8 of the PyPy Python interpreter is out. "The main highlight of the release is the introduction of `list strategies`_ which makes homogenous lists more efficient both in terms of performance and memory. This release also upgrades us from Python 2.7.1 compatibility to 2.7.2. Otherwise it's "business as usual" in the sense that performance improved roughly 10% on average since the previous release."

Full Story (comments: none)

Wayland and Weston 0.85.0 released

The first official releases of the Wayland display system, now split into two pieces called "Wayland" and "Weston," are now available. What's not immediately available is a lot of information about what capabilities are in this release or how usable it is. "Wayland is the protocol and IPC mechanism while Weston is the reference compositor implementation. The 0.85 branch in both repositories is going to be protocol and interface stable. We have a series of protocol changes on the table before 1.0 but this branch marks a stable point before we jump into that."

Full Story (comments: 26)

Newsletters and articles

Development newsletters from the last week

Comments (1 posted)

The Chromium Blog on the future of JavaScript

The Chromium Blog has an overview of the new JavaScript features expected in a major revision of the language next year. "A proxy simulates a JavaScript object or function, and can customize just about any aspect of their behaviour that you can imagine. This is a real power feature, that takes reflection to a new level and can be used to implement various advanced abstractions and interfaces."

Comments (14 posted)

Day: A New Approach to GNOME Application Design

GNOME design team member Allan Day writes about ideas in GNOME 3 application design on his blog. In the article, he looks at the use of maximized windows, views, primary toolbars, and more. The design team is documenting these ideas in a new version of the GNOME Human Interface Guidelines (HIG). "There are many other application design patterns that we've been working on, including application menus, a new grid view for displaying collections of content, in-app notifications, new models for dialogs, nice full screen controls and a sidebar list pattern. Together, these provide the opportunity to create applications that efficient, modern, elegant, and a pleasure to use."

Comments (159 posted)

Wayland - Beyond X (The H)

The H has posted a lengthy introduction to the Wayland display server project. "Wayland is only as useful as the applications and toolkits it supports. Applications built for Xfce, GNOME and LXDE use the GTK+ toolkit. Porting the toolkit to Wayland makes the use of Wayland transparent to the application. From an application's point of view, it is still using the common UI elements, buttons, scrollbars, text areas, sliders and checkboxes, that it has always used; but further down the graphics stack, in the backend, these are now translated so they are rendered with an appropriate graphics library into Wayland buffers."

Comments (434 posted)

Page editor: Jonathan Corbet

Announcements

Brief items

Booktype, an open source platform to write and publish print and digital books

Sourcefabric has announced Booktype, a free, open source platform that produces books for print, Amazon, iBooks and almost any ereader within minutes. "Booktype can be used as an out-of-the-box community platform to enable contributors to create profiles, join groups, watch books, chat live, post status messages and keep track of book activity. Communities such as www.booki.cc and FLOSS Manuals are already using the platform with thousands of contributors in multiple languages collaborating on everything from cookbooks to textbooks, reference guides to works of fiction."

Full Story (comments: 5)

Articles of interest

Patent troll claims ownership of interactive Web—and might win (ars technica)

Ars technica is reporting on a patent trial taking place in ... you guessed it ... East Texas that could have quite an impact on the web as we know it. Eolas Technologies is suing eight companies including Google and Yahoo for $600 million in a series of four trials, the first of which (to determine the validity of the patents) could go to the jury today. "Today, Doyle and his lawyers say he’s owed royalty payments for the use of a stunning array of modern Web technologies. Watching online video, having a "search suggestion" pop up in a search bar, or even rotating an image of a sweater you might want to buy on an online shopping site—all are said to infringe on the idea-space of Doyle and his company, Eolas Technologies."

Comments (5 posted)

Jury rules that Eolas's "interactive web" patent is invalid (ars technica)

Well, that was quick. The jury in a patent lawsuit against eight companies that use "interactive web" technologies has found the Eolas Technologies patent to be invalid, according to a report at ars technica. "[Tim] Berners-Lee took to Twitter to cheer the decision. 'Texas jury agreed Eolas 906 patent invalid,' he wrote. 'Good thing too!' [...] Companies that depend on the open Web hailed the verdict. 'We are pleased that the court found the patents invalid, as it affirms our assertion that the claims are without merit,' a Google spokesperson told Ars."

Comments (57 posted)

FSFE: Nortel/Rockstar and Google/Motorola deals

Karsten Gerloff, President of the Free Software Foundation Europe, warns that the approval of two deals involving large patent portfolios could cause problems for free software. The first deal, recently approved by the US Department of Justice (DoJ), involves the sale of Nortel's patent portfolio to a consortium led by Apple and Microsoft. The second deal involves the sale of Motorola Mobility patents to Google, which has been approved by both the DoJ and the European Commission. "'We appreciate that competition authorities in the US and Europe continue to take software patents seriously as a risk to competition,' says Karsten Gerloff, President of the Free Software Foundation Europe. 'However, we believe that the commitments made by Google, Microsoft and Apple regarding their patent licensing policies are not sufficient to allow everyone to compete on equal terms.'"

Full Story (comments: 4)

Welte: Some comments on the heated debate on SFC / Busybox / Linux GPL enforcement

Over on his blog, Harald Welte comments on GPL enforcement in light of the Busybox/Toybox controversy. "In any kind of GPL enforcement, you of course not only want the complete corresponding source code to one program, but to all of the GPL/LGPL/AGPL or otherwise copyleft licensed programs contained in the product. We at gpl-violations.org have always been requesting the complete corresponding source code to all GPL licensed software during our communication with the infringing companies. This request was typically honored by everyone, without the need to apply any pressure onto it. After all, releasing only one bit of code causes the risk to get sued by somebody else who owns the other not-yet-compliant part of the code. [...] Now there have been rumors that SFC was not only requesting non-Busybox source code, but also making it a condition for the explicit re-instatement of the license on Busybox. Whether or not there was such a hard condition is subject to debate and there are different opinions on it. For those in the field of FOSS licensing, it has always known that there are different lines of thought with regard to the requirement to explicit reinstatement. We in Germany generally think that it is not required at all, and the existing preliminary injunctions at least implicitly acknowledge that as they enjoin companies from distributing a product as long as it is not in compliance with the license. In other (particularly the U.S.), it is generally assumed that explicit reinstatement is required."

Comments (36 posted)

New Books

Practical Malware Analysis--New from No Starch Press

No Starch Press has released "Practical Malware Analysis" by Michael Sikorski and Andrew Honig.

Full Story (comments: none)

Upcoming Events

Events: February 16, 2012 to April 16, 2012

The following event listing is taken from the LWN.net Calendar.

Date(s)EventLocation
February 15
February 17
2012 Embedded Linux Conference Redwood Shores, CA, USA
February 16
February 17
Embedded Technology Conference 2012 San José, Costa Rica
February 17
February 18
Red Hat, Fedora, JBoss Developer Conference Brno, Czech Republic
February 24
February 25
PHP UK Conference 2012 London, UK
February 27
March 2
ConFoo Web Techno Conference 2012 Montreal, Canada
February 28 Israeli Perl Workshop 2012 Ramat Gan, Israel
March 2
March 4
BSP2012 - Moenchengladbach Mönchengladbach, Germany
March 2
March 4
Debian BSP in Cambridge Cambridge, UK
March 5
March 7
14. German Perl Workshop Erlangen, Germany
March 6
March 10
CeBIT 2012 Hannover, Germany
March 7
March 15
PyCon 2012 Santa Clara, CA, USA
March 10
March 11
Debian BSP in Perth Perth, Australia
March 10
March 11
Open Source Days 2012 Copenhagen, Denmark
March 16
March 17
Clojure/West San Jose, CA, USA
March 17
March 18
Chemnitz Linux Days Chemnitz, Germany
March 23
March 24
Cascadia IT Conference (LOPSA regional conference) Seattle, WA, USA
March 24
March 25
LibrePlanet 2012 Boston, MA, USA
March 26
March 29
EclipseCon 2012 Washington D.C., USA
March 26
April 1
Wireless Battle of the Mesh (V5) Athens, Greece
March 28 PGDay Austin 2012 Austin, TX, USA
March 28
March 29
Palmetto Open Source Software Conference 2012 Columbia, South Carolina, USA
March 29 Program your own open source system-on-a-chip (OpenRISC) London, UK
March 30 PGDay DC 2012 Sterling, VA, USA
April 2 PGDay NYC 2012 New York, NY, USA
April 3
April 5
LF Collaboration Summit San Francisco, CA, USA
April 5
April 6
Android Open San Francisco, CA, USA
April 10
April 12
Percona Live: MySQL Conference and Expo 2012 Santa Clara, CA, United States
April 12
April 13
European LLVM Conference London, UK
April 12
April 15
Linux Audio Conference 2012 Stanford, CA, USA
April 12
April 19
SuperCollider Symposium London, UK
April 13 Drizzle Day Santa Clara, CA, USA

If your event does not appear here, please tell us about it.

Page editor: Rebecca Sobol

Copyright © 2012, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds