| Bug #20989 | View '(null).(null)' references invalid table(s)... on SQL SECURITY INVOKER | ||
|---|---|---|---|
| Submitted: | 12 Jul 2006 9:13 | Modified: | 4 Aug 2006 19:35 | 
| Reporter: | Beat Vontobel (Silver Quality Contributor) (OCA) | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | MySQL Server: Security: Privileges | Severity: | S2 (Serious) | 
| Version: | 5.0.23,5.1 | OS: | Any (any) | 
| Assigned to: | Tatiana Azundris Nuernberg | CPU Architecture: | Any | 
   [12 Jul 2006 9:13]
   Beat Vontobel        
  
 
   [12 Jul 2006 9:27]
   Beat Vontobel        
  Query that worked in versions < 5.0.23 and fails in 5.0.23 (to be run as user t)
Attachment: query.sql (application/octet-stream, text), 1.75 KiB.
   [12 Jul 2006 9:31]
   Beat Vontobel        
  Sorry, there's a typo in the last line of the GRANT statements, it should of course also read "TO t" in the end.
   [12 Jul 2006 10:39]
   MySQL Verification Team        
  I was able to reproduce this bug report with 5.0.23. Steps to reproduce: 1) restore database and tables from dump file 2) create test user GRANT SELECT ON ms.* TO t; GRANT SELECT ON mn.* TO t; GRANT SELECT ON s.* TO t; GRANT INSERT, DELETE ON ms.messwerte_ready TO t; 3) connect as test user and execute REPLACE query from file. When I connect as user 't' I can execute SELECT part of REPLACE without any error, I also can do REPLACE into table ms.messwerte_ready if I specify constant values, for example. I only get an error if I use REPLACE with SELECT .. FROM view.
   [12 Jul 2006 13:30]
   MySQL Verification Team        
  The same error with latest 5.0.
   [14 Jul 2006 9:09]
   Tatiana Azundris Nuernberg        
  oops, need INSERT on STATIONS and COUNTRIES?
   [14 Jul 2006 9:18]
   Beat Vontobel        
  Hi Tatjana, thanks for your excellent and quick reaction to bug #21014. What do you actually mean by your last question for this bug? Something wrong with the test case?
   [14 Jul 2006 9:28]
   Tatiana Azundris Nuernberg        
  I can reproduce your results. The above note was mostly to myself, but I figured that since the error message is not as clear as one might wish, I'd show what was the hangup internally. Whether this is useful information to hotfix until .24 is out of the door depends 100 % on your use case of course, so maybe it was confusing rather than helpful. I'll try to make the next addendum "fixed in 5.0.24", then. Have a nice weekend!
   [14 Jul 2006 9:36]
   Beat Vontobel        
  Cool, I hope you still have a nice weekend ahead of you as well and won't spend all the time on fixing bugs. ;-)
   [19 Jul 2006 9:49]
   Bugs System        
  A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/9328
   [19 Jul 2006 17:57]
   Tatiana Azundris Nuernberg        
  new and improved, with many funny test cases. pushed to -relase (5.0.24) and -main (5.0.25)
   [20 Jul 2006 17:26]
   Paul DuBois        
  Noted in 5.0.24 changelog. REPLACE ... SELECT for a view required the INSERT privilege for tables other than the table being modified. Setting bug report back to NDI pending push of fix in to 5.1.
   [4 Aug 2006 18:40]
   Timothy Smith        
  Pushed to 5.1; will be in 5.1.13.
   [4 Aug 2006 19:17]
   Timothy Smith        
  Oops, I apoligize; this will be in 5.1.12.
   [4 Aug 2006 19:35]
   Paul DuBois        
  Noted in 5.1.12 changelog.
   [15 Aug 2006 17:46]
   Bugs System        
  A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/10501 ChangeSet@1.2246, 2006-08-15 21:45:24+04:00, evgen@sunlight.local +9 -0 Fixed bug#21261: Wrong access rights was required for an insert into a view SELECT right instead of INSERT right was required for an insert into to a view. This wrong behaviour appeared after the fix for bug #20989. Its intention was to ask only SELECT right for all tables except the very first for a complex INSERT query. But that patch has done it in a wrong way and lead to asking a wrong access right for an insert into a view. The setup_tables_and_check_access() function now accepts two want_access parameters. One will be used for the first table and the second for other tables.
   [29 Aug 2006 13:23]
   Evgeny Potemkin        
  Fixed in 5.0.25

