Commit 33fe5e36 authored by Nick Mathewson's avatar Nick Mathewson 🦀
Browse files

Never use time(NULL) as assumed publication time for a directory.


svn:r2105
parent 0536b853
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -1415,7 +1415,8 @@ int router_get_dir_hash(const char *s, char *digest);
int router_get_runningrouters_hash(const char *s, char *digest);
int router_parse_list_from_string(const char **s,
                                  routerlist_t **dest,
                                  smartlist_t *good_nickname_list);
                                  smartlist_t *good_nickname_list,
                                  time_t published);
int router_parse_routerlist_from_directory(const char *s,
                                           routerlist_t **dest,
                                           crypto_pk_env_t *pkey);
+1 −1
Original line number Diff line number Diff line
@@ -561,7 +561,7 @@ int router_load_routerlist_from_string(const char *s, int trusted)
{
  routerlist_t *new_list=NULL;

  if (router_parse_list_from_string(&s, &new_list, NULL)) {
  if (router_parse_list_from_string(&s, &new_list, NULL, 0)) {
    log(LOG_WARN, "Error parsing router file");
    return -1;
  }
+6 −4
Original line number Diff line number Diff line
@@ -393,14 +393,15 @@ router_parse_routerlist_from_directory(const char *str,
  {
    routerinfo_t *me = router_get_my_routerinfo();
    if(me)
      router_update_status_from_smartlist(me, time(NULL), good_nickname_list);
      router_update_status_from_smartlist(me, published_on,
                                          good_nickname_list);
  }

  /* Read the router list from s, advancing s up past the end of the last
   * router. */
  str = end;
  if (router_parse_list_from_string(&str, &new_dir,
                                    good_nickname_list)) {
                                    good_nickname_list, published_on)) {
    log_fn(LOG_WARN, "Error reading routers from directory");
    goto err;
  }
@@ -576,7 +577,8 @@ static int check_directory_signature(const char *digest,
 */
int
router_parse_list_from_string(const char **s, routerlist_t **dest,
                              smartlist_t *good_nickname_list)
                              smartlist_t *good_nickname_list,
                              time_t published_on)
{
  routerinfo_t *router;
  smartlist_t *routers;
@@ -607,7 +609,7 @@ router_parse_list_from_string(const char **s, routerlist_t **dest,
    }

    if (good_nickname_list) {
      router_update_status_from_smartlist(router, time(NULL),
      router_update_status_from_smartlist(router, published_on,
                                          good_nickname_list);
    } else {
      router->is_running = 1; /* start out assuming all dirservers are up */