some coverity fixes
authorSimon Brandner <simon.brandner@partner.bmw.de>
Tue, 5 Feb 2013 13:16:10 +0000 (14:16 +0100)
committerAlexander Wenzel <Alexander.AW.Wenzel@bmw.de>
Fri, 19 Jul 2013 14:54:40 +0000 (16:54 +0200)
fixed some merge problems

Signed-off-by: Alexander Wenzel <Alexander.AW.Wenzel@bmw.de>
src/daemon/dlt_daemon_common.c
src/lib/dlt_filetransfer.c
src/shared/dlt_common.c
src/system/dlt-system-filetransfer.c
src/tests/dlt-test-client.c

index 1b34f21..afedff9 100644 (file)
@@ -2288,12 +2288,18 @@ void dlt_daemon_control_send_control_message( int sock, DltDaemon *daemon, DltMe
             /* Optional: Send serial header, if requested */
             if (daemon->sendserialheader)
             {
-                send(sock, dltSerialHeader,sizeof(dltSerialHeader),0);
+                if (0 > send(sock, dltSerialHeader,sizeof(dltSerialHeader),0))
+                    dlt_log(LOG_WARNING,"dlt_daemon_control_send_control_message: send serialheader failed\n");
+
             }
 
             /* Send data */
-            send(sock, msg->headerbuffer+sizeof(DltStorageHeader),msg->headersize-sizeof(DltStorageHeader),0);
-            send(sock, msg->databuffer,msg->datasize,0);
+
+            if ( 0 > send(sock, msg->headerbuffer+sizeof(DltStorageHeader),msg->headersize-sizeof(DltStorageHeader),0))
+                dlt_log(LOG_WARNING,"dlt_daemon_control_send_control_message: send DltStorageHeader failed\n");
+
+            if ( 0 > send(sock, msg->databuffer,msg->datasize,0))
+                dlt_log(LOG_WARNING,"dlt_daemon_control_send_control_message: send databuffer failed\n");
 
             DLT_DAEMON_SEM_FREE();
         }
index ce18f52..8ef0072 100644 (file)
 **  aw          Alexander Wenzel           BMW                                **
 *******************************************************************************/
 
+#include <stdio.h>
+#include <string.h>
 #include "dlt_filetransfer.h"
+#include "dlt_common.h"
 
 //!Defines the buffer size of a single file package which will be logged to dlt
 #define BUFFER_SIZE 1024
@@ -69,11 +72,18 @@ unsigned char buffer[BUFFER_SIZE];
 //!Get some information about the file size of a file
 /**See stat(2) for more informations.
  * @param file Absolute file path
- * @return Returns the size of the file (if it is a regular file or a symbolic link) in bytes.
+ * @return Returns the size of the file (if it is a regular file or a symbolic link) in bytes. Returns 0 in case of error. Regard: can also be a size value!
  */
-unsigned long getFilesize(const char* file){
+unsigned long getFilesize(const char* file, int *ok){
        struct stat st;
-       stat(file, &st);
+
+    if ( -1 == stat(file, &st))
+    {
+        //we can only return 0, as the value is unsigned
+        *ok = 0;
+        return 0;
+    }
+    *ok = 1;
        return (unsigned long)st.st_size;
 }
 
@@ -106,15 +116,23 @@ void stringHash(const char* str, unsigned long *hash )
  * @param file Absolute file path
  * @return Returns a unique number associated with each filename
  */
-unsigned long getFileSerialNumber(const char* file){
+unsigned long getFileSerialNumber(const char* file, int *ok){
        struct stat st;
        unsigned long ret;
-       stat(file, &st);
-       ret = st.st_ino;
-       ret = ret << (sizeof(ret)*8)/2;
-       ret |= st.st_size;
-    ret ^= st.st_ctime;
-    stringHash(file, &ret);
+    if ( -1 == stat(file, &st))
+    {
+        *ok = 0;
+        ret = 0;
+    }
+    else
+    {
+        *ok = 1;
+        ret = st.st_ino;
+        ret = ret << (sizeof(ret)*8)/2;
+        ret |= st.st_size;
+        ret ^= st.st_ctime;
+        stringHash(file, &ret);
+    }
        return ret;
 }
 
@@ -191,13 +209,14 @@ void dlt_user_log_file_errorMessage(DltContext *fileContext, const char *filenam
 
        if(errno != ENOENT)
        {
+        int ok = 0;
                DLT_LOG(*fileContext,DLT_LOG_ERROR,
                        DLT_STRING("FLER"),
                        DLT_INT(errorCode),
                        DLT_INT(-errno),
-                       DLT_UINT(getFileSerialNumber(filename)),
+            DLT_UINT(getFileSerialNumber(filename,&ok)),
                        DLT_STRING(filename),
-                       DLT_UINT(getFilesize(filename)),
+            DLT_UINT(getFilesize(filename,&ok)),
                        DLT_STRING(getFileCreationDate2(filename)),
                        DLT_UINT(dlt_user_log_file_packagesCount(fileContext,filename)),
                        DLT_UINT(BUFFER_SIZE),
@@ -226,11 +245,12 @@ int dlt_user_log_file_infoAbout(DltContext *fileContext, const char *filename){
        
        if(isFile(filename))
        {
+               int ok;
                DLT_LOG(*fileContext,DLT_LOG_INFO,
                        DLT_STRING("FLIF"),
-                       DLT_STRING("file serialnumber"),DLT_UINT(getFileSerialNumber(filename)),
+                       DLT_STRING("file serialnumber"),DLT_UINT(getFileSerialNumber(filename,&ok)),
                        DLT_STRING("filename"),DLT_STRING(filename),
-                       DLT_STRING("file size in bytes"),DLT_UINT(getFilesize(filename)),
+                       DLT_STRING("file size in bytes"),DLT_UINT(getFilesize(filename,&ok)),
                        DLT_STRING("file creation date"),DLT_STRING(getFileCreationDate2(filename)),
                        DLT_STRING("number of packages"),DLT_UINT(dlt_user_log_file_packagesCount(fileContext, filename)),
                        DLT_STRING("FLIF")
@@ -296,7 +316,12 @@ int dlt_user_log_file_packagesCount(DltContext *fileContext, const char *filenam
        if(isFile(filename))
        {
                packages = 1;
-               filesize = getFilesize(filename);
+               int ok;
+               filesize = getFilesize(filename,&ok);
+               if (!ok){
+                       dlt_user_log_file_errorMessage(fileContext,filename,DLT_FILETRANSFER_ERROR_PACKAGE_COUNT);
+                       return -1;
+               }
                if(filesize < BUFFER_SIZE)
                {       
                        return packages;
@@ -334,15 +359,16 @@ int dlt_user_log_file_header_alias(DltContext *fileContext,const char *filename,
 
        if(isFile(filename))
        {
+               int ok;
                DLT_LOG(*fileContext,DLT_LOG_INFO,
-                                       DLT_STRING("FLST"),
-                                       DLT_UINT(getFileSerialNumber(filename)),
-                                       DLT_STRING(alias),
-                                       DLT_UINT(getFilesize(filename)),
-                                       DLT_STRING(getFileCreationDate2(filename));
-                                       DLT_UINT(dlt_user_log_file_packagesCount(fileContext,filename)),
-                                       DLT_UINT(BUFFER_SIZE),
-                                       DLT_STRING("FLST")
+                               DLT_STRING("FLST"),
+                               DLT_UINT(getFileSerialNumber(filename,&ok)),
+                               DLT_STRING(alias),
+                               DLT_UINT(getFilesize(filename,&ok)),
+                               DLT_STRING(getFileCreationDate2(filename));
+                               DLT_UINT(dlt_user_log_file_packagesCount(fileContext,filename)),
+                               DLT_UINT(BUFFER_SIZE),
+                               DLT_STRING("FLST")
                                );
 
                return 0;
@@ -367,11 +393,12 @@ int dlt_user_log_file_header(DltContext *fileContext,const char *filename){
 
        if(isFile(filename))
        {
+        int ok;
                DLT_LOG(*fileContext,DLT_LOG_INFO,
                                        DLT_STRING("FLST"),
-                                       DLT_UINT(getFileSerialNumber(filename)),
+                                       DLT_UINT(getFileSerialNumber(filename,&ok)),
                                        DLT_STRING(filename),
-                                       DLT_UINT(getFilesize(filename)),
+                                       DLT_UINT(getFilesize(filename,&ok)),
                                        DLT_STRING(getFileCreationDate2(filename));
                                        DLT_UINT(dlt_user_log_file_packagesCount(fileContext,filename)),
                                        DLT_UINT(BUFFER_SIZE),
@@ -433,12 +460,23 @@ int dlt_user_log_file_data(DltContext *fileContext,const char *filename, int pac
 //                             if(checkUserBufferForFreeSpace()<0)
 //                                     return DLT_FILETRANSFER_ERROR_FILE_DATA_USER_BUFFER_FAILED;
 
-                               fseek ( file , (packageToTransfer-1)*BUFFER_SIZE , SEEK_SET );
+                               if ( 0 != fseek ( file , (packageToTransfer-1)*BUFFER_SIZE , SEEK_SET ) )
+                               {
+                                               DLT_LOG(*fileContext,DLT_LOG_ERROR,
+                                               DLT_STRING("failed to fseek in file: "),
+                                               DLT_STRING(filename),
+                                               DLT_STRING("ferror:"),
+                                               DLT_INT(ferror(file))
+                                               );
+                                               fclose (file);
+                                               return -1;
+                               }
                                readBytes = fread(buffer, sizeof(char), BUFFER_SIZE, file);
+                int ok = 0;
 
                                DLT_LOG(*fileContext,DLT_LOG_INFO,
                                DLT_STRING("FLDA"),
-                               DLT_UINT(getFileSerialNumber(filename)),
+                DLT_UINT(getFileSerialNumber(filename,&ok)),
                                DLT_UINT(packageToTransfer),
                                DLT_RAW(buffer,readBytes),
                                DLT_STRING("FLDA")
@@ -456,10 +494,10 @@ int dlt_user_log_file_data(DltContext *fileContext,const char *filename, int pac
                                {
                                        pkgNumber++;
                                        readBytes = fread(buffer, sizeof(char), BUFFER_SIZE, file);
-                               
+                                       int ok;
                                        DLT_LOG(*fileContext,DLT_LOG_INFO,
                                                        DLT_STRING("FLDA"),
-                                                       DLT_UINT(getFileSerialNumber(filename)),
+                                                       DLT_UINT(getFileSerialNumber(filename,&ok)),
                                                        DLT_UINT(pkgNumber),
                                                        DLT_RAW(buffer,readBytes),
                                                        DLT_STRING("FLDA")
@@ -493,9 +531,10 @@ int dlt_user_log_file_end(DltContext *fileContext,const char *filename,int delet
        if(isFile(filename))
        {
 
+               int ok;
                DLT_LOG(*fileContext,DLT_LOG_INFO,
                                DLT_STRING("FLFI"),
-                               DLT_UINT(getFileSerialNumber(filename)),
+                               DLT_UINT(getFileSerialNumber(filename,&ok)),
                                DLT_STRING("FLFI")
                );
                
index fbc1934..09a3258 100755 (executable)
@@ -1740,7 +1740,11 @@ int dlt_file_read(DltFile *file,int verbose)
         if (dlt_file_read_header_extended(file, verbose)<0)
         {
             /* go back to last position in file */
-            fseek(file->handle,file->file_position,SEEK_SET);
+            if ( 0 != fseek(file->handle,file->file_position,SEEK_SET))
+            {
+                sprintf(str,"Seek to last file pos failed!\n");
+                dlt_log(LOG_ERR, str);
+            }
             return-1;
         }
 
@@ -1760,9 +1764,15 @@ int dlt_file_read(DltFile *file,int verbose)
         if (fseek(file->handle,file->msg.datasize,SEEK_CUR)!=0)
         {
             /* go back to last position in file */
-            fseek(file->handle,file->file_position,SEEK_SET);
             sprintf(str,"Seek failed to skip payload data of size %d!\n",file->msg.datasize);
             dlt_log(LOG_ERR, str);
+
+            if (0 != fseek(file->handle,file->file_position,SEEK_SET))
+            {
+                sprintf(str,"Seek back also failed!\n");
+                dlt_log(LOG_ERR, str);
+            }
+
             return -1;
         }
     }
@@ -1844,7 +1854,11 @@ int dlt_file_read_raw(DltFile *file,int resync, int verbose)
     if (dlt_file_read_header_raw(file,resync,verbose)<0)
     {
         /* go back to last position in file */
-        fseek(file->handle,file->file_position,SEEK_SET);
+        if (0!= fseek(file->handle,file->file_position,SEEK_SET))
+        {
+            sprintf(str,"dlt_file_read_raw, fseek failed 1\n");
+            dlt_log(LOG_ERR, str);
+        }
         return -1;
     }
 
@@ -1852,14 +1866,22 @@ int dlt_file_read_raw(DltFile *file,int resync, int verbose)
     if (dlt_file_read_header_extended(file, verbose)<0)
     {
         /* go back to last position in file */
-        fseek(file->handle,file->file_position,SEEK_SET);
+        if (0 != fseek(file->handle,file->file_position,SEEK_SET))
+        {
+            sprintf(str,"dlt_file_read_raw, fseek failed 2\n");
+            dlt_log(LOG_ERR, str);
+        }
         return-1;
     }
 
     if (dlt_file_read_data(file,verbose)<0)
     {
         /* go back to last position in file */
-        fseek(file->handle,file->file_position,SEEK_SET);
+        if (0 != fseek(file->handle,file->file_position,SEEK_SET))
+        {
+            sprintf(str,"dlt_file_read_raw, fseek failed 3\n");
+            dlt_log(LOG_ERR, str);
+        }
         return-1;
     }
 
index a4b0aff..d33e6b9 100644 (file)
@@ -67,7 +67,7 @@
 
 extern DltSystemThreads threads;
 // From dlt_filetransfer
-extern unsigned long getFileSerialNumber(const char* file);
+extern unsigned long getFileSerialNumber(const char* file, int *ok);
 
 DLT_IMPORT_CONTEXT(dltsystem);
 DLT_DECLARE_CONTEXT(filetransferContext)
@@ -96,7 +96,11 @@ char *unique_name(char *src)
     DLT_LOG(dltsystem, DLT_LOG_DEBUG,
             DLT_STRING("dlt-system-filetransfer, creating unique temporary file name."));
     time_t t = time(NULL);
-    unsigned long l = getFileSerialNumber(src) ^ t;
+    int ok;
+    unsigned long l = getFileSerialNumber(src, &ok) ^ t;
+    if (!ok){
+        return (char*) NULL;
+    }
 
     char *basename_f = basename(src);
     // Length of ULONG_MAX + 1
index 3855000..5da480f 100755 (executable)
@@ -1827,7 +1827,7 @@ int dlt_testclient_message_callback(DltMessage *message, void *data)
                                     /* Get length */
                                     DLT_MSG_READ_VALUE(length_tmp,ptr,datalength,uint16_t);
                                     length=DLT_ENDIAN_GET_16(message->standardheader->htyp, length_tmp);
-                                    if ((length==datalength) && (length=10))
+                                    if ((length==datalength) && (length==10))
                                     {
                                         dltdata->test_counter_function[1]++;
                                     }