diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/xbug.c b/ap/libc/glibc/glibc-2.23/stdio-common/xbug.c
new file mode 100644
index 0000000..06f74af
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/xbug.c
@@ -0,0 +1,70 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+
+typedef struct _Buffer {
+  char *buff;
+  int  room, used;
+} Buffer;
+
+void InitBuffer (Buffer *b);
+void AppendToBuffer (Buffer *b, const char *str, int len);
+void ReadFile (Buffer *buffer, FILE *input);
+
+#define INIT_BUFFER_SIZE 10000
+
+void
+InitBuffer (Buffer *b)
+{
+  b->room = INIT_BUFFER_SIZE;
+  b->used = 0;
+  b->buff = (char *)malloc(INIT_BUFFER_SIZE*sizeof(char));
+}
+
+void
+AppendToBuffer (Buffer *b, const char *str, int len)
+{
+  while (b->used + len > b->room) {
+    b->buff = (char *)realloc(b->buff, 2*b->room*(sizeof(char)));
+    b->room *= 2;
+  }
+  strncpy(b->buff + b->used, str, len);
+  b->used += len;
+}
+
+void
+ReadFile (Buffer *buffer, FILE *input)
+{
+  char       buf[BUFSIZ + 1];
+  int        bytes;
+
+  buffer->used = 0;
+  while (!feof(input) && (bytes = fread(buf, 1, BUFSIZ, input)) > 0) {
+    AppendToBuffer(buffer, buf, bytes);
+  }
+  AppendToBuffer(buffer, "", 1);
+}
+
+int
+main(int argc, char *argv[])
+{
+  char filename[] = "xbug.c";
+  FILE *input;
+  Buffer buffer;
+
+  InitBuffer(&buffer);
+
+  if (!freopen (filename, "r", stdin))
+    fprintf(stderr, "cannot open file\n");
+
+  unsetenv ("LD_LIBRARY_PATH");
+
+  if (!(input = popen("/bin/cat", "r")))
+    fprintf(stderr, "cannot run \n");
+
+  ReadFile(&buffer, input);
+  pclose(input);
+
+  return 0;
+}
