mirror of
				https://github.com/owntone/owntone-server.git
				synced 2025-10-29 15:55:02 -04:00 
			
		
		
		
	Fix frees for nulled error pointers, other minor problems
This commit is contained in:
		
							parent
							
								
									86b45a028e
								
							
						
					
					
						commit
						1418a64dc9
					
				| @ -389,6 +389,8 @@ void db_get_error(char **pe, int error, ...) { | ||||
|     vsnprintf(errbuf, sizeof(errbuf), db_error_list[error], ap); | ||||
|     va_end(ap); | ||||
| 
 | ||||
|     DPRINTF(E_SPAM,L_MISC,"Raising error: %s\n",errbuf); | ||||
| 
 | ||||
|     *pe = strdup(errbuf); | ||||
| } | ||||
| 
 | ||||
|  | ||||
| @ -136,19 +136,18 @@ int db_sqlite2_open(char **pe, char *dsn) { | ||||
|     } | ||||
| 
 | ||||
|     sqlite_busy_timeout(db_sqlite2_songs,30000);  /* 30 seconds */ | ||||
|     db_sqlite2_unlock(); | ||||
| 
 | ||||
|     err = db_sql_fetch_int(pe,&ver,"select value from config where term='version'"); | ||||
|     err = db_sql_fetch_int(pe,&ver,"select value from config where " | ||||
|                            "term='version'"); | ||||
|     if(err != DB_E_SUCCESS) { | ||||
|         free(*pe); | ||||
|         /* create the table */ | ||||
|         DPRINTF(E_FATAL,L_DB,"Can't create table yet!\n"); | ||||
|     } | ||||
| 
 | ||||
|     if(ver != DB_SQLITE2_VERSION) { | ||||
|         if(pe) { free(*pe); } | ||||
|         /* we'll catch this on the init */ | ||||
|         DPRINTF(E_LOG,L_DB,"Can't get db version. New database?\n"); | ||||
|     } else if(ver != DB_SQLITE2_VERSION) { | ||||
|         DPRINTF(E_FATAL,L_DB,"Can't upgrade database!\n"); | ||||
|     } | ||||
| 
 | ||||
|     db_sqlite2_unlock(); | ||||
|     return DB_E_SUCCESS; | ||||
| } | ||||
| 
 | ||||
| @ -221,10 +220,11 @@ int db_sqlite2_enum_begin(char **pe, char *fmt, ...) { | ||||
|         va_end(ap); | ||||
|     } | ||||
| 
 | ||||
|     DPRINTF(E_DBG,L_DB,"Executing :%s\n",db_sqlite2_enum_query); | ||||
|     DPRINTF(E_DBG,L_DB,"Executing: %s\n",db_sqlite2_enum_query); | ||||
|     db_sqlite2_in_enum=1; | ||||
| 
 | ||||
|     err=sqlite_compile(db_sqlite2_songs,db_sqlite2_enum_query,&ptail,&db_sqlite2_pvm,&perr); | ||||
|     err=sqlite_compile(db_sqlite2_songs,db_sqlite2_enum_query, | ||||
|                        &ptail,&db_sqlite2_pvm,&perr); | ||||
| 
 | ||||
|     if(err != SQLITE_OK) { | ||||
|         db_get_error(pe,DB_E_SQL_ERROR,perr); | ||||
| @ -315,9 +315,9 @@ int db_sqlite2_event(int event_type) { | ||||
|         break; | ||||
| 
 | ||||
|     case DB_SQL_EVENT_FULLRELOAD: /* either a fresh load or force load */ | ||||
|         db_sqlite2_exec(NULL,E_DBG,"delete index idx_path"); | ||||
|         db_sqlite2_exec(NULL,E_DBG,"delete index idx_songid"); | ||||
|         db_sqlite2_exec(NULL,E_DBG,"delete index idx_playlistid"); | ||||
|         db_sqlite2_exec(NULL,E_DBG,"drop index idx_path"); | ||||
|         db_sqlite2_exec(NULL,E_DBG,"drop index idx_songid"); | ||||
|         db_sqlite2_exec(NULL,E_DBG,"drop index idx_playlistid"); | ||||
| 
 | ||||
|         db_sqlite2_exec(NULL,E_DBG,"drop table songs"); | ||||
|         db_sqlite2_exec(NULL,E_DBG,"drop table playlists"); | ||||
| @ -447,7 +447,7 @@ char *db_initial = | ||||
|     "   path           VARCHAR(4096),\n" | ||||
|     "   idx            INTEGER NOT NULL\n" | ||||
|     ");\n" | ||||
|     "insert into config values ('version','','1');\n" | ||||
|     "insert into config values ('version','','8');\n" | ||||
|     "insert into playlists values (1,'Library',1,0,'1',0,'',0);\n" | ||||
|     "create index idx_path on songs(path);\n" | ||||
|     "create index idx_songid on playlistitems(songid);\n" | ||||
|  | ||||
							
								
								
									
										23
									
								
								src/db-sql.c
									
									
									
									
									
								
							
							
						
						
									
										23
									
								
								src/db-sql.c
									
									
									
									
									
								
							| @ -72,7 +72,9 @@ int db_sql_fetch_row(char **pe, SQL_ROW *row, char *fmt, ...) { | ||||
|     char *query; | ||||
|     va_list ap; | ||||
| 
 | ||||
| 
 | ||||
|     db_sql_need_dispose = 0; | ||||
|     *row=NULL; | ||||
| 
 | ||||
|     va_start(ap,fmt); | ||||
|     query=db_sqlite2_vmquery(fmt,ap); | ||||
| @ -81,7 +83,6 @@ int db_sql_fetch_row(char **pe, SQL_ROW *row, char *fmt, ...) { | ||||
|     err=db_sqlite2_enum_begin(pe,query); | ||||
|     db_sqlite2_vmfree(query); | ||||
| 
 | ||||
| 
 | ||||
|     if(err != DB_E_SUCCESS) { | ||||
|         return err; | ||||
|     } | ||||
| @ -92,7 +93,7 @@ int db_sql_fetch_row(char **pe, SQL_ROW *row, char *fmt, ...) { | ||||
|         return err; | ||||
|     } | ||||
| 
 | ||||
|     if(!row) { | ||||
|     if(!(*row)) { | ||||
|         db_sqlite2_enum_end(NULL); | ||||
|         db_get_error(pe,DB_E_NOROWS); | ||||
|         return DB_E_NOROWS; | ||||
| @ -298,7 +299,7 @@ int db_sql_delete_playlist(char **pe, int playlistid) { | ||||
| 
 | ||||
|     if(result != DB_E_SUCCESS) { | ||||
|         if(result == DB_E_NOROWS) { /* Override the generic error */ | ||||
|             free(*pe); | ||||
|             if(pe) { free(*pe); }; | ||||
|             db_get_error(pe,DB_E_INVALID_PLAYLIST); | ||||
|             return DB_E_INVALID_PLAYLIST; | ||||
|         } | ||||
| @ -332,7 +333,7 @@ int db_sql_delete_playlist_item(char **pe, int playlistid, int songid) { | ||||
| 
 | ||||
|     if(result != DB_E_SUCCESS) { | ||||
|         if(result == DB_E_NOROWS) { /* Override generic error */ | ||||
|             free(*pe); | ||||
|             if(pe) { free(*pe); }; | ||||
|             db_get_error(pe,DB_E_INVALID_PLAYLIST); | ||||
|             return DB_E_INVALID_PLAYLIST; | ||||
|         } | ||||
| @ -351,7 +352,7 @@ int db_sql_delete_playlist_item(char **pe, int playlistid, int songid) { | ||||
| 
 | ||||
|     if(result != DB_E_SUCCESS) { | ||||
|         if(result == DB_E_NOROWS) { /* Override generic error */ | ||||
|             free(*pe); | ||||
|             if(pe) { free(*pe); }; | ||||
|             db_get_error(pe,DB_E_INVALID_SONGID); | ||||
|             return DB_E_INVALID_SONGID; | ||||
|         } | ||||
| @ -384,7 +385,7 @@ int db_sql_edit_playlist(char **pe, int id, char *name, char *clause) { | ||||
| 
 | ||||
|     if(result != DB_E_SUCCESS) { | ||||
|         if(result == DB_E_NOROWS) { /* Override generic error */ | ||||
|             free(*pe); | ||||
|             if(pe) { free(*pe); }; | ||||
|             db_get_error(pe,DB_E_INVALID_PLAYLIST); | ||||
|             return DB_E_INVALID_PLAYLIST; | ||||
|         } | ||||
| @ -419,7 +420,7 @@ int db_sql_add_playlist(char **pe, char *name, int type, char *clause, char *pat | ||||
|                             "upper(title)=upper('%q')",name); | ||||
| 
 | ||||
|     if(result == DB_E_NOROWS) { /* good playlist name */ | ||||
|         free(*pe); | ||||
|         if(pe) { free(*pe); }; | ||||
|     } else { | ||||
|         if(result != DB_E_SUCCESS) { | ||||
|             return result; | ||||
| @ -493,7 +494,7 @@ int db_sql_add_playlist_item(char **pe, int playlistid, int songid) { | ||||
| 
 | ||||
|     if(result != DB_E_SUCCESS) { | ||||
|         if(result == DB_E_NOROWS) { /* Override generic error */ | ||||
|             free(*pe); | ||||
|             if(pe) { free(*pe); }; | ||||
|             db_get_error(pe,DB_E_INVALID_PLAYLIST); | ||||
|             return DB_E_INVALID_PLAYLIST; | ||||
|         } | ||||
| @ -511,7 +512,7 @@ int db_sql_add_playlist_item(char **pe, int playlistid, int songid) { | ||||
| 
 | ||||
|     if(result != DB_E_SUCCESS) { | ||||
|         if(result == DB_E_NOROWS) { /* Override generic error */ | ||||
|             free(*pe); | ||||
|             if(pe) { free(*pe); }; | ||||
|             db_get_error(pe,DB_E_INVALID_SONGID); | ||||
|             return DB_E_INVALID_SONGID; | ||||
|         } | ||||
| @ -1514,7 +1515,7 @@ MP3FILE *db_sql_fetch_item(char **pe, int id) { | ||||
|     err=db_sql_fetch_row(pe,&row,"select * from songs where id=%d",id); | ||||
|     if(err != DB_E_SUCCESS) { | ||||
|         if(err == DB_E_NOROWS) { /* Override generic error */ | ||||
|             free(*pe); | ||||
|             if(pe) { free(*pe); }; | ||||
|             db_get_error(pe,DB_E_INVALID_SONGID); | ||||
|             return NULL; | ||||
|         } | ||||
| @ -1549,7 +1550,7 @@ MP3FILE *db_sql_fetch_path(char **pe, char *path, int index) { | ||||
|     err=db_sql_fetch_row(pe,&row,"select * from songs where path='%q'",path); | ||||
|     if(err != DB_E_SUCCESS) { | ||||
|         if(err == DB_E_NOROWS) { /* Override generic error */ | ||||
|             free(*pe); | ||||
|             if(pe) { free(*pe); }; | ||||
|             db_get_error(pe,DB_E_INVALID_SONGID); | ||||
|             return NULL; | ||||
|         } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user