/mandos/trunk

To get this branch, use:
bzr branch http://bzr.recompile.se/loggerhead/mandos/trunk

« back to all changes in this revision

Viewing changes to plugins.d/plymouth.c

  • Committer: teddy at recompile
  • Date: 2020-02-05 20:32:33 UTC
  • Revision ID: teddy@recompile.se-20200205203233-450ojm36jseglq4m
Server: Stagger checker runs when creating clients

To avoid checkers for all clients all running at the same time
periodically, schedule every initially scheduled future checker to run
at a time in the future a random amount of the interval, from the
current time.

* mandos (Client.init_checker): Schedule the first scheduled future
  run of a checker to be a randomly chosen amount of this client's
  "interval" (instead of a full interval).

Show diffs side-by-side

added added

removed removed

Lines of Context:
44
44
                                   STDERR_FILENO, execv(), access() */
45
45
#include <stdlib.h>             /* free(), EXIT_FAILURE, realloc(),
46
46
                                   EXIT_SUCCESS, malloc(), _exit(),
47
 
                                   getenv(), reallocarray() */
 
47
                                   getenv() */
48
48
#include <dirent.h>             /* scandir(), alphasort() */
49
49
#include <inttypes.h>           /* intmax_t, strtoumax(), SCNuMAX */
50
50
#include <sys/stat.h>           /* struct stat, lstat() */
204
204
    char **tmp;
205
205
    int i = 0;
206
206
    for (; argv[i] != NULL; i++){
207
 
#if defined(__GLIBC_PREREQ) and __GLIBC_PREREQ(2, 26)
208
 
      tmp = reallocarray(new_argv, ((size_t)i + 2),
209
 
                         sizeof(const char *));
210
 
#else
211
 
      if(((size_t)i + 2) > (SIZE_MAX / sizeof(const char *))){
212
 
        /* overflow */
213
 
        tmp = NULL;
214
 
        errno = ENOMEM;
215
 
      } else {
216
 
        tmp = realloc(new_argv, ((size_t)i + 2) * sizeof(const char *));
217
 
      }
218
 
#endif
 
207
      tmp = realloc(new_argv, sizeof(const char *) * ((size_t)i + 2));
219
208
      if(tmp == NULL){
220
 
        error_plus(0, errno, "reallocarray");
 
209
        error_plus(0, errno, "realloc");
221
210
        free(new_argv);
222
211
        _exit(EX_OSERR);
223
212
      }