- ret = real_uname((struct utsname *) buf);
- strncpy(buf->release, ((env = getenv("UTS_RELEASE")) == NULL) ? UTS_RELEASE : env, 65);
+ if (real_uname == NULL)
+ real_uname = (uname_func *)get_libc_func("uname");
+
+ ret = real_uname(buf);
+ if (ret < 0)
+ return ret;
+
+ release = getenv("UTS_RELEASE");
+ if (release == NULL)
+ release = UTS_RELEASE;
+ strncpy(buf->release, release, sizeof(buf->release) - 1);
+ buf->release[sizeof(buf->release) - 1] = '\0';
+