fixed some memory safety bugs
diff --git a/aos/common/logging/logging_interface.cc b/aos/common/logging/logging_interface.cc
index b4244fb..ae8cc01 100644
--- a/aos/common/logging/logging_interface.cc
+++ b/aos/common/logging/logging_interface.cc
@@ -68,7 +68,10 @@
                                int levels) {
   internal::RunWithCurrentImplementation(
       levels, [&](LogImplementation * implementation) {
-    implementation->DoLog(level, format, ap);
+    va_list ap1;
+    va_copy(ap1, ap);
+    implementation->DoLog(level, format, ap1);
+    va_end(ap1);
 
     if (level == FATAL) {
       VDie(format, ap);
diff --git a/aos/linux_code/configuration.cc b/aos/linux_code/configuration.cc
index e5e5583..6b1cdf6 100644
--- a/aos/linux_code/configuration.cc
+++ b/aos/linux_code/configuration.cc
@@ -78,7 +78,7 @@
           r, size, errno, strerror(errno));
     }
     if (ret < size) {
-      void *last_slash = memrchr(r, '/', size);
+      void *last_slash = memrchr(r, '/', ret);
       if (last_slash == NULL) {
         r[ret] = '\0';
         LOG(FATAL, "couldn't find a '/' in \"%s\"\n", r);