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);