Re-write to avoid leaking fd if flock(2) fails
This commit is contained in:
		
							parent
							
								
									4c4def2876
								
							
						
					
					
						commit
						d2d29c6865
					
				@ -2,6 +2,7 @@
 | 
				
			|||||||
#
 | 
					#
 | 
				
			||||||
# The Qubes OS Project, http://www.qubes-os.org
 | 
					# The Qubes OS Project, http://www.qubes-os.org
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
 | 
					# Copyright (C) 2016  Jean-Philippe Ouellet <jpo@vt.edu>
 | 
				
			||||||
# Copyright (C) 2012  Agnieszka Kostrzewa <agnieszka.kostrzewa@gmail.com>
 | 
					# Copyright (C) 2012  Agnieszka Kostrzewa <agnieszka.kostrzewa@gmail.com>
 | 
				
			||||||
# Copyright (C) 2012  Marek Marczykowski <marmarek@mimuw.edu.pl>
 | 
					# Copyright (C) 2012  Marek Marczykowski <marmarek@mimuw.edu.pl>
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
@ -39,19 +40,20 @@ def copy_text_to_qubes_clipboard(text):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    try:
 | 
					    try:
 | 
				
			||||||
        fd = os.open(APPVIEWER_LOCK, os.O_RDWR|os.O_CREAT, 0666)
 | 
					        fd = os.open(APPVIEWER_LOCK, os.O_RDWR|os.O_CREAT, 0666)
 | 
				
			||||||
        fcntl.flock(fd, fcntl.LOCK_EX)
 | 
					 | 
				
			||||||
    except:
 | 
					    except:
 | 
				
			||||||
        QMessageBox.warning(None, "Warning!", "Error while accessing Qubes clipboard!")
 | 
					        QMessageBox.warning(None, "Warning!", "Error while accessing Qubes clipboard!")
 | 
				
			||||||
        return
 | 
					    else:
 | 
				
			||||||
 | 
					        try:
 | 
				
			||||||
    try:
 | 
					            fcntl.flock(fd, fcntl.LOCK_EX)
 | 
				
			||||||
        with open(CLIPBOARD_CONTENTS, "w") as contents:
 | 
					        except:
 | 
				
			||||||
            contents.write(text)
 | 
					            QMessageBox.warning(None, "Warning!", "Error while locking Qubes clipboard!")
 | 
				
			||||||
        with open(CLIPBOARD_SOURCE, "w") as source:
 | 
					        else:
 | 
				
			||||||
            source.write("dom0")
 | 
					            try:
 | 
				
			||||||
    except:
 | 
					                with open(CLIPBOARD_CONTENTS, "w") as contents:
 | 
				
			||||||
        QMessageBox.warning(None, "Warning!", "Error while writing to Qubes clipboard!")
 | 
					                    contents.write(text)
 | 
				
			||||||
    finally:
 | 
					                with open(CLIPBOARD_SOURCE, "w") as source:
 | 
				
			||||||
        fcntl.flock(fd, fcntl.LOCK_UN)
 | 
					                    source.write("dom0")
 | 
				
			||||||
 | 
					            except:
 | 
				
			||||||
 | 
					                QMessageBox.warning(None, "Warning!", "Error while writing to Qubes clipboard!")
 | 
				
			||||||
 | 
					            fcntl.flock(fd, fcntl.LOCK_UN)
 | 
				
			||||||
        os.close(fd)
 | 
					        os.close(fd)
 | 
				
			||||||
        return
 | 
					 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user