X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Femail.c;h=b4a5e8114ac7b613b1a4903c877cb8f7a54000e5;hb=ea341582f90a9a7ee4b5525551edc2fdb4ec1226;hp=849b7f932a98f4faf147ae4fb7592ebf4309c166;hpb=2079ee1517e34de372f58e7e2267ad5c71a8a41f;p=collectd.git diff --git a/src/email.c b/src/email.c index 849b7f93..b4a5e811 100644 --- a/src/email.c +++ b/src/email.c @@ -403,15 +403,21 @@ static void *open_connection(void __attribute__((unused)) * arg) { { struct group sg; struct group *grp; - char grbuf[2048]; int status; + long int grbuf_size = sysconf(_SC_GETGR_R_SIZE_MAX); + if (grbuf_size <= 0) + grbuf_size = sysconf(_SC_PAGESIZE); + if (grbuf_size <= 0) + grbuf_size = 4096; + char grbuf[grbuf_size]; + grp = NULL; status = getgrnam_r(group, &sg, grbuf, sizeof(grbuf), &grp); if (status != 0) { char errbuf[1024]; log_warn("getgrnam_r (%s) failed: %s", group, - sstrerror(errno, errbuf, sizeof(errbuf))); + sstrerror(status, errbuf, sizeof(errbuf))); } else if (grp == NULL) { log_warn("No such group: `%s'", group); } else {