diff --git a/libraries/libldap/dnssrv.c b/libraries/libldap/dnssrv.c index 1503c068b6..69c9bb5ff0 100644 --- a/libraries/libldap/dnssrv.c +++ b/libraries/libldap/dnssrv.c @@ -216,36 +216,27 @@ static void srv_shuffle(srv_record *a, int n) { for (i=0; i1; a++, p--) { + if (!total) { + /* all remaining weights are zero, + do a straight Fisher-Yates shuffle */ + j = srv_rand() * p; + } else { + r = srv_rand() * total; + for (j=0; j