fix potential memory leak with converting byte arrays to bitmaps

This commit is contained in:
Jonathan Jenne 2020-11-06 11:12:45 +01:00
parent 18482491ab
commit cf7a55203b
4 changed files with 33 additions and 15 deletions

View File

@ -288,9 +288,6 @@ Public Class ClassControlCreator
Return control Return control
End Function End Function
Private Shared Function ByteArrayToBitmap(bytearray() As Byte) As Bitmap
Return New Bitmap(New System.IO.MemoryStream(bytearray))
End Function
Public Shared Function CreateExistingButton(row As DataRow, designMode As Boolean) As Button Public Shared Function CreateExistingButton(row As DataRow, designMode As Boolean) As Button
Dim oControl As Button = CreateBaseControl(New Button(), row, designMode) Dim oControl As Button = CreateBaseControl(New Button(), row, designMode)

View File

@ -14,16 +14,14 @@ Public Class ClassEncryption
Dim sha1 As New SHA1CryptoServiceProvider Dim sha1 As New SHA1CryptoServiceProvider
' Hash the key. ' Hash the key.
Dim keyBytes() As Byte = Dim keyBytes() As Byte = Text.Encoding.Unicode.GetBytes(key)
System.Text.Encoding.Unicode.GetBytes(key)
Dim hash() As Byte = sha1.ComputeHash(keyBytes) Dim hash() As Byte = sha1.ComputeHash(keyBytes)
' Truncate or pad the hash. ' Truncate or pad the hash.
ReDim Preserve hash(length - 1) ReDim Preserve hash(length - 1)
Return hash Return hash
End Function End Function
Public Function EncryptData( Public Function EncryptData(ByVal plaintext As String) As String
ByVal plaintext As String) As String
' Convert the plaintext string to a byte array. ' Convert the plaintext string to a byte array.
Dim plaintextBytes() As Byte = Dim plaintextBytes() As Byte =
@ -40,12 +38,19 @@ Public Class ClassEncryption
encStream.Write(plaintextBytes, 0, plaintextBytes.Length) encStream.Write(plaintextBytes, 0, plaintextBytes.Length)
encStream.FlushFinalBlock() encStream.FlushFinalBlock()
Dim oPrintableString = Convert.ToBase64String(ms.ToArray)
Try
ms.Dispose()
Catch ex As Exception
LOGGER.Error(ex)
End Try
' Convert the encrypted stream to a printable string. ' Convert the encrypted stream to a printable string.
Return Convert.ToBase64String(ms.ToArray) Return oPrintableString
End Function End Function
'Entschlüsselt die Zeichenfolge 'Entschlüsselt die Zeichenfolge
Public Function DecryptData( Public Function DecryptData(ByVal encryptedtext As String) As String
ByVal encryptedtext As String) As String
' Convert the encrypted text string to a byte array. ' Convert the encrypted text string to a byte array.
Dim encryptedBytes() As Byte = Convert.FromBase64String(encryptedtext) Dim encryptedBytes() As Byte = Convert.FromBase64String(encryptedtext)
@ -60,9 +65,17 @@ Public Class ClassEncryption
' Use the crypto stream to write the byte array to the stream. ' Use the crypto stream to write the byte array to the stream.
decStream.Write(encryptedBytes, 0, encryptedBytes.Length) decStream.Write(encryptedBytes, 0, encryptedBytes.Length)
decStream.FlushFinalBlock() decStream.FlushFinalBlock()
' Convert the plaintext stream to a string.
Dim result = System.Text.Encoding.Unicode.GetString(ms.ToArray) Dim result = System.Text.Encoding.Unicode.GetString(ms.ToArray)
result = result.Replace("!Didalog35452Heuchelheim=", "") result = result.Replace("!Didalog35452Heuchelheim=", "")
' Convert the plaintext stream to a string.
Try
ms.Dispose()
Catch ex As Exception
LOGGER.Error(ex)
End Try
Return result Return result
End Function End Function
End Class End Class

View File

@ -1,6 +1,17 @@
Module ModuleHelper Module ModuleHelper
Public Function ByteArrayToBitmap(bytearray() As Byte) As Bitmap Public Function ByteArrayToBitmap(bytearray() As Byte) As Bitmap
Return New Bitmap(New System.IO.MemoryStream(bytearray)) Try
Dim oBitmap As Bitmap
Using oStream As New IO.MemoryStream(bytearray)
oBitmap = New Bitmap(oStream)
End Using
Return oBitmap
Catch ex As Exception
LOGGER.Error(ex)
Return Nothing
End Try
End Function End Function
Public Function StringToByteArray(ByVal hex As String) As Byte() Public Function StringToByteArray(ByVal hex As String) As Byte()

View File

@ -207,9 +207,6 @@ Public Class frmFormDesigner
End If End If
Return oType <> FINALINDICES.INDEX_TYPE_VECTOR_DATETIME Return oType <> FINALINDICES.INDEX_TYPE_VECTOR_DATETIME
End Function End Function
Public Function ByteArrayToBitmap(bytearray() As Byte) As Bitmap
Return New Bitmap(New System.IO.MemoryStream(bytearray))
End Function
Sub LoadControls() Sub LoadControls()
Try Try
TBPM_PROFILE_CONTROLSTableAdapter.FillByProfil(DD_DMSLiteDataSet.TBPM_PROFILE_CONTROLS, USER_LANGUAGE, ProfileId) TBPM_PROFILE_CONTROLSTableAdapter.FillByProfil(DD_DMSLiteDataSet.TBPM_PROFILE_CONTROLS, USER_LANGUAGE, ProfileId)