mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	* ext/socket/socket.c (sock_s_unpack_sockaddr_in): check too short
sockaddr. (sock_s_unpack_sockaddr_un): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@21469 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
		
							parent
							
								
									cb190ce643
								
							
						
					
					
						commit
						07594eed50
					
				
					 3 changed files with 18 additions and 0 deletions
				
			
		|  | @ -1,3 +1,9 @@ | |||
| Tue Jan 13 00:57:56 2009  Tanaka Akira  <akr@fsij.org> | ||||
| 
 | ||||
| 	* ext/socket/socket.c (sock_s_unpack_sockaddr_in): check too short | ||||
| 	  sockaddr. | ||||
| 	  (sock_s_unpack_sockaddr_un): ditto. | ||||
| 
 | ||||
| Mon Jan 12 16:45:28 2009  Nobuyoshi Nakada  <nobu@ruby-lang.org> | ||||
| 
 | ||||
| 	* win32/win32.c (open_dir_handle): extracted from rb_w32_opendir. | ||||
|  |  | |||
|  | @ -3802,6 +3802,11 @@ sock_s_unpack_sockaddr_in(self, addr) | |||
|     VALUE host; | ||||
| 
 | ||||
|     sockaddr = (struct sockaddr_in*)StringValuePtr(addr); | ||||
|     if (RSTRING_LEN(addr) <  | ||||
|         (char*)&((struct sockaddr *)sockaddr)->sa_family + | ||||
|         sizeof(((struct sockaddr *)sockaddr)->sa_family) - | ||||
|         (char*)sockaddr) | ||||
|         rb_raise(rb_eArgError, "too short sockaddr"); | ||||
|     if (((struct sockaddr *)sockaddr)->sa_family != AF_INET | ||||
| #ifdef INET6 | ||||
|         && ((struct sockaddr *)sockaddr)->sa_family != AF_INET6 | ||||
|  | @ -3850,6 +3855,11 @@ sock_s_unpack_sockaddr_un(self, addr) | |||
|     VALUE path; | ||||
| 
 | ||||
|     sockaddr = (struct sockaddr_un*)StringValuePtr(addr); | ||||
|     if (RSTRING_LEN(addr) <  | ||||
|         (char*)&((struct sockaddr *)sockaddr)->sa_family + | ||||
|         sizeof(((struct sockaddr *)sockaddr)->sa_family) - | ||||
|         (char*)sockaddr) | ||||
|         rb_raise(rb_eArgError, "too short sockaddr"); | ||||
|     if (((struct sockaddr *)sockaddr)->sa_family != AF_UNIX) { | ||||
|         rb_raise(rb_eArgError, "not an AF_UNIX sockaddr"); | ||||
|     } | ||||
|  |  | |||
|  | @ -79,5 +79,7 @@ class TestSocket < Test::Unit::TestCase | |||
|     assert_raise(ArgumentError) { Socket.unpack_sockaddr_un(sockaddr_in) } | ||||
|     sockaddr_un = Socket.sockaddr_un("/tmp/s") | ||||
|     assert_raise(ArgumentError) { Socket.unpack_sockaddr_in(sockaddr_un) } | ||||
|     assert_raise(ArgumentError) { Socket.unpack_sockaddr_in("") } | ||||
|     assert_raise(ArgumentError) { Socket.unpack_sockaddr_un("") } | ||||
|   end | ||||
| end if defined?(Socket) && Socket.respond_to?(:sockaddr_un) | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 akr
						akr