add linux syscall sys_getrandom to lcorernd
[lcore.git] / fd_utils.pas
index 290eb059a06b27e5a5c7644a6937ecb27fc611fb..86b6d3a49553c4b2d9ab820fd4feb9a1b3771aaf 100644 (file)
@@ -48,7 +48,7 @@ uses sysutils;
 Procedure FD_Clr(fd:longint;var fds:fdSet);{$ifdef useinline}inline;{$endif}\r
 { Remove fd from the set of filedescriptors}\r
 begin\r
-  if (fd < 0) then raise exception.create('FD_Clr fd out of range: '+inttostr(fd));\r
+  if (fd < 0) or ((fd shr fdwordshift) > high(fdset)) then raise exception.create('FD_Clr fd out of range: '+inttostr(fd));\r
   fds[fd shr fdwordshift]:=fds[fd shr fdwordshift] and (not (1 shl (fd and fdwordmaxbit)));\r
 end;\r
 \r
@@ -61,14 +61,14 @@ end;
 Procedure FD_Set(fd:longint;var fds:fdSet);{$ifdef useinline}inline;{$endif}\r
 { Add fd to the set of filedescriptors }\r
 begin\r
-  if (fd < 0) then raise exception.create('FD_set fd out of range: '+inttostr(fd));\r
+  if (fd < 0) or ((fd shr fdwordshift) > high(fdset)) then raise exception.create('FD_set fd out of range: '+inttostr(fd));\r
   fds[fd shr fdwordshift]:=fds[fd shr fdwordshift] or (1 shl (fd and fdwordmaxbit));\r
 end;\r
 \r
 Function FD_IsSet(fd:longint;var fds:fdSet):boolean;{$ifdef useinline}inline;{$endif}\r
 { Test if fd is part of the set of filedescriptors }\r
 begin\r
-  if (fd < 0) then begin\r
+  if (fd < 0) or ((fd shr fdwordshift) > high(fdset)) then begin\r
     result := false;\r
     exit;\r
   end;\r