* fhandler.cc (fhandler_disk_file::fstat): Always reset file position
to original value after checking for executable magic.
This commit is contained in:
		| @@ -1,3 +1,8 @@ | |||||||
|  | Tue Jun  5 11:18:00 2001  Corinna Vinschen <corinna@vinschen.de> | ||||||
|  |  | ||||||
|  | 	* fhandler.cc (fhandler_disk_file::fstat): Always reset file position | ||||||
|  | 	to original value after checking for executable magic. | ||||||
|  |  | ||||||
| Mon Jun  4 16:21:00 2001  Corinna Vinschen <corinna@vinschen.de> | Mon Jun  4 16:21:00 2001  Corinna Vinschen <corinna@vinschen.de> | ||||||
|  |  | ||||||
| 	* cygheap.h (cygheap_user::cygheap_user): Initialize token to | 	* cygheap.h (cygheap_user::cygheap_user): Initialize token to | ||||||
|   | |||||||
| @@ -974,16 +974,23 @@ fhandler_disk_file::fstat (struct stat *buf) | |||||||
| 		buf->st_mode |= S_IFREG; | 		buf->st_mode |= S_IFREG; | ||||||
| 		if (!dont_care_if_execable () && !get_execable_p ()) | 		if (!dont_care_if_execable () && !get_execable_p ()) | ||||||
| 		  { | 		  { | ||||||
| 		    DWORD done; | 		    DWORD cur, done; | ||||||
| 		    char magic[3]; | 		    char magic[3]; | ||||||
|  |  | ||||||
|  | 		    /* First retrieve current position, set to beginning | ||||||
|  | 		       of file if not already there. */ | ||||||
|  | 		    cur = SetFilePointer (get_handle(), 0, NULL, FILE_CURRENT); | ||||||
|  | 		    if (cur != INVALID_SET_FILE_POINTER && | ||||||
|  | 		        (!cur || | ||||||
|  | 			 SetFilePointer (get_handle(), 0, NULL, FILE_BEGIN) | ||||||
|  | 			 != INVALID_SET_FILE_POINTER)) | ||||||
|  | 		      { | ||||||
| 			/* FIXME should we use /etc/magic ? */ | 			/* FIXME should we use /etc/magic ? */ | ||||||
| 			magic[0] = magic[1] = magic[2] = '\0'; | 			magic[0] = magic[1] = magic[2] = '\0'; | ||||||
| 		    if (ReadFile (get_handle (), magic, 3, &done, 0) | 			if (ReadFile (get_handle (), magic, 3, &done, 0) && | ||||||
| 			&& done == 3) | 			    done == 3 && has_exec_chars (magic, done)) | ||||||
| 		      { |  | ||||||
| 			if (has_exec_chars (magic, done)) |  | ||||||
| 			    set_execable_p (); | 			    set_execable_p (); | ||||||
| 			SetFilePointer (get_handle(), -(LONG) done, NULL, FILE_CURRENT); | 			SetFilePointer (get_handle(), cur, NULL, FILE_BEGIN); | ||||||
| 		      } | 		      } | ||||||
| 		  } | 		  } | ||||||
| 		if (get_execable_p ()) | 		if (get_execable_p ()) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user