Commit 96691943 by Arnaud Charlet

[multiple changes]

2011-09-06  Robert Dewar  <dewar@adacore.com>

	* sem_ch8.ads: Minor reformatting

2011-09-06  Thomas Quinot  <quinot@adacore.com>

	* s-oscons-tmplt.c, g-socket.adb (GNAT.Sockets.Clear,Set,Is_Set):
	Guard against socket values that are not in [0;FD_SETSIZE[

From-SVN: r178576
parent 54bf19e4
2011-09-06 Robert Dewar <dewar@adacore.com> 2011-09-06 Robert Dewar <dewar@adacore.com>
* sem_ch8.ads: Minor reformatting
2011-09-06 Thomas Quinot <quinot@adacore.com>
* s-oscons-tmplt.c, g-socket.adb (GNAT.Sockets.Clear,Set,Is_Set):
Guard against socket values that are not in [0;FD_SETSIZE[
2011-09-06 Robert Dewar <dewar@adacore.com>
* s-osinte-linux.ads, a-iteint.ads, exp_ch6.adb, s-solita.adb: Minor * s-osinte-linux.ads, a-iteint.ads, exp_ch6.adb, s-solita.adb: Minor
reformatting. reformatting.
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- B o d y -- -- B o d y --
-- -- -- --
-- Copyright (C) 2001-2010, AdaCore -- -- Copyright (C) 2001-2011, AdaCore --
-- -- -- --
-- GNAT is free software; you can redistribute it and/or modify it under -- -- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- -- -- terms of the GNU General Public License as published by the Free Soft- --
...@@ -195,6 +195,11 @@ package body GNAT.Sockets is ...@@ -195,6 +195,11 @@ package body GNAT.Sockets is
procedure Narrow (Item : in out Socket_Set_Type); procedure Narrow (Item : in out Socket_Set_Type);
-- Update Last as it may be greater than the real last socket -- Update Last as it may be greater than the real last socket
procedure Check_For_Fd_Set (Fd : Socket_Type);
pragma Inline (Check_For_Fd_Set);
-- Raise Constraint_Error if Fd is less than 0 or greater than or equal to
-- FD_SETSIZE.
-- Types needed for Datagram_Socket_Stream_Type -- Types needed for Datagram_Socket_Stream_Type
type Datagram_Socket_Stream_Type is new Root_Stream_Type with record type Datagram_Socket_Stream_Type is new Root_Stream_Type with record
...@@ -568,6 +573,18 @@ package body GNAT.Sockets is ...@@ -568,6 +573,18 @@ package body GNAT.Sockets is
Narrow (E_Socket_Set); Narrow (E_Socket_Set);
end Check_Selector; end Check_Selector;
----------------------
-- Check_For_Fd_Set --
----------------------
procedure Check_For_Fd_Set (Fd : Socket_Type) is
begin
if Fd < 0 or else Fd >= SOSC.FD_SETSIZE then
raise Constraint_Error with "invalid value for socket set: "
& Image (Fd);
end if;
end Check_For_Fd_Set;
----------- -----------
-- Clear -- -- Clear --
----------- -----------
...@@ -578,6 +595,7 @@ package body GNAT.Sockets is ...@@ -578,6 +595,7 @@ package body GNAT.Sockets is
is is
Last : aliased C.int := C.int (Item.Last); Last : aliased C.int := C.int (Item.Last);
begin begin
Check_For_Fd_Set (Socket);
if Item.Last /= No_Socket then if Item.Last /= No_Socket then
Remove_Socket_From_Set (Item.Set'Access, C.int (Socket)); Remove_Socket_From_Set (Item.Set'Access, C.int (Socket));
Last_Socket_In_Set (Item.Set'Access, Last'Unchecked_Access); Last_Socket_In_Set (Item.Set'Access, Last'Unchecked_Access);
...@@ -1454,6 +1472,7 @@ package body GNAT.Sockets is ...@@ -1454,6 +1472,7 @@ package body GNAT.Sockets is
Socket : Socket_Type) return Boolean Socket : Socket_Type) return Boolean
is is
begin begin
Check_For_Fd_Set (Socket);
return Item.Last /= No_Socket return Item.Last /= No_Socket
and then Socket <= Item.Last and then Socket <= Item.Last
and then Is_Socket_In_Set (Item.Set'Access, C.int (Socket)) /= 0; and then Is_Socket_In_Set (Item.Set'Access, C.int (Socket)) /= 0;
...@@ -2100,6 +2119,7 @@ package body GNAT.Sockets is ...@@ -2100,6 +2119,7 @@ package body GNAT.Sockets is
procedure Set (Item : in out Socket_Set_Type; Socket : Socket_Type) is procedure Set (Item : in out Socket_Set_Type; Socket : Socket_Type) is
begin begin
Check_For_Fd_Set (Socket);
if Item.Last = No_Socket then if Item.Last = No_Socket then
-- Uninitialized socket set, make sure it is properly zeroed out -- Uninitialized socket set, make sure it is properly zeroed out
......
...@@ -1260,6 +1260,7 @@ CND(SIZEOF_sockaddr_in6, "struct sockaddr_in6") ...@@ -1260,6 +1260,7 @@ CND(SIZEOF_sockaddr_in6, "struct sockaddr_in6")
#define SIZEOF_fd_set (sizeof (fd_set)) #define SIZEOF_fd_set (sizeof (fd_set))
CND(SIZEOF_fd_set, "fd_set"); CND(SIZEOF_fd_set, "fd_set");
CND(FD_SETSIZE, "Max fd value");
#define SIZEOF_struct_hostent (sizeof (struct hostent)) #define SIZEOF_struct_hostent (sizeof (struct hostent))
CND(SIZEOF_struct_hostent, "struct hostent"); CND(SIZEOF_struct_hostent, "struct hostent");
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- Copyright (C) 1992-2010, Free Software Foundation, Inc. -- -- Copyright (C) 1992-2011, Free Software Foundation, Inc. --
-- -- -- --
-- GNAT is free software; you can redistribute it and/or modify it under -- -- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- -- -- terms of the GNU General Public License as published by the Free Soft- --
...@@ -44,16 +44,16 @@ package Sem_Ch8 is ...@@ -44,16 +44,16 @@ package Sem_Ch8 is
-- Subprograms -- -- Subprograms --
----------------- -----------------
procedure Analyze_Exception_Renaming (N : Node_Id); procedure Analyze_Exception_Renaming (N : Node_Id);
procedure Analyze_Expanded_Name (N : Node_Id); procedure Analyze_Expanded_Name (N : Node_Id);
procedure Analyze_Generic_Function_Renaming (N : Node_Id); procedure Analyze_Generic_Function_Renaming (N : Node_Id);
procedure Analyze_Generic_Package_Renaming (N : Node_Id); procedure Analyze_Generic_Package_Renaming (N : Node_Id);
procedure Analyze_Generic_Procedure_Renaming (N : Node_Id); procedure Analyze_Generic_Procedure_Renaming (N : Node_Id);
procedure Analyze_Object_Renaming (N : Node_Id); procedure Analyze_Object_Renaming (N : Node_Id);
procedure Analyze_Package_Renaming (N : Node_Id); procedure Analyze_Package_Renaming (N : Node_Id);
procedure Analyze_Subprogram_Renaming (N : Node_Id); procedure Analyze_Subprogram_Renaming (N : Node_Id);
procedure Analyze_Use_Package (N : Node_Id); procedure Analyze_Use_Package (N : Node_Id);
procedure Analyze_Use_Type (N : Node_Id); procedure Analyze_Use_Type (N : Node_Id);
procedure End_Scope; procedure End_Scope;
-- Called at end of scope. On exit from blocks and bodies (subprogram, -- Called at end of scope. On exit from blocks and bodies (subprogram,
...@@ -71,19 +71,26 @@ package Sem_Ch8 is ...@@ -71,19 +71,26 @@ package Sem_Ch8 is
procedure End_Use_Package (N : Node_Id); procedure End_Use_Package (N : Node_Id);
procedure End_Use_Type (N : Node_Id); procedure End_Use_Type (N : Node_Id);
-- Subsidiaries of End_Use_Clauses. Also called directly for use clauses -- Subsidiaries of End_Use_Clauses. Also called directly for use clauses
-- appearing in context clauses. -- appearing in context clauses.
procedure Find_Direct_Name (N : Node_Id); procedure Find_Direct_Name (N : Node_Id);
-- Given a direct name (Identifier or Operator_Symbol), this routine scans -- Given a direct name (Identifier or Operator_Symbol), this routine scans
-- the homonym chain for the name searching for corresponding visible -- the homonym chain for the name, searching for corresponding visible
-- entities to find the referenced entity (or in the case of overloading, -- entities to find the referenced entity (or in the case of overloading,
-- entities). On return, the Entity and Etype fields are set. In the -- one candidate interpretation). On return, the Entity and Etype fields
-- non-overloaded case, these are the correct final entries. In the -- are set. In the non-overloaded case, these are the correct entries.
-- overloaded case, Is_Overloaded is set, Etype and Entity refer to an -- In the overloaded case, the flag Is_Overloaded is set, Etype and Entity
-- arbitrary element of the overloads set, and an appropriate list of -- refer to an arbitrary element of the overloads set, and the appropriate
-- entries has been made in the overload interpretation table (to be -- entries have been added to the overloads table entry for the node. The
-- disambiguated in the resolve phase). -- overloading will be disambiguated during type resolution.
--
-- Note, when this is called during semantic analysis in the overloaded
-- case, the entity set will be the most recently declared homonym. In
-- particular, the caller may follow the homonym chain checking for all
-- entries in the current scope, and that will give all homonyms that are
-- declared before the point of call in the current scope. This is useful
-- for example in the processing for pragma Inline.
procedure Find_Selected_Component (N : Node_Id); procedure Find_Selected_Component (N : Node_Id);
-- Resolve various cases of selected components, recognize expanded names -- Resolve various cases of selected components, recognize expanded names
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment