- Use hidden visibility by default, and export the symbol explicitly.
- Resolve real_uname() only once.
- Return early if the real_uname() fails, to avoid acting on bogus data.
- Call dlerror() before dlsym() to clear any previous errors.
- Compute the release member size from the utsname struct instead of
hard-coding it.
- Always NUL-terminate the relese buffer, so protect against very long
environment strings.
- Make various variables into const.
- Add functional tests.
- Style changes.
Change-Id: Iaf040edcc704fbc50a15d895276c820e71fe19a5