+ /*
+ * The more straightforward &(c->userid) destination pointer can
+ * cause some gcc versions to misidentify the size of the destination
+ * buffer, tripping the runtime check of glibc's source fortification.
+ */
+ strlcpy(buf + offsetof(struct socks_op, userid), socks_userid,
+ sizeof(buf) - sizeof(struct socks_op));