--- dao/DaoMqPump2/DaoMqPump2/Transport.cs 2013/11/25 13:03:57 2082 +++ dao/DaoMqPump2/DaoMqPump2/Transport.cs 2013/11/26 19:20:45 2083 @@ -280,7 +280,10 @@ string msgString = mqMsg.ReadString(mqMsg.MessageLength); //System.Console.WriteLine(msgString); - if ( msgString.StartsWith("?") ) //Hvis transaktionen starter med et ? er det ikke en gyldig transaktion + + // Hvis transaktionen starter med et ? er det ikke en gyldig transaktion + // validér ligeledes at headeren er gyldig + if ( msgString.StartsWith("?") || validateSalt2Header(msgString) == false ) { string discarded_filename = getLogFilename(LogfileType.LogDiscarded); using (StreamWriter discardedlog = new StreamWriter(discarded_filename, true)) @@ -454,6 +457,51 @@ return now.ToString("s"); } + private bool validateSalt2Header(string salt2String) + { + int result; + + string afsender = salt2String.Substring(0, 5); + string modtager = salt2String.Substring(5, 5); + string afsenderTegnSaet = salt2String.Substring(10, 6); + string standardNavn = salt2String.Substring(16, 6); + string standardVersion = salt2String.Substring(22, 3); + string afsenderSekvensnr = salt2String.Substring(25, 6); + string afsenderTidsstempel = salt2String.Substring(31, 14); + string afsenderBakkeIdent = salt2String.Substring(45, 5); + string modtagerBakkeIdent = salt2String.Substring(50, 5); + string transaktionForkortelse = salt2String.Substring(55, 4); + string transaktionsLaengde = salt2String.Substring(59, 5); + string prioritet = salt2String.Substring(64, 1); + + if (int.TryParse(standardVersion.Trim(), out result) == false) // standardVersion _skal_ være en int + { + return false; + } + + if (int.TryParse(afsenderSekvensnr.Trim(), out result) == false) // afsenderSekvensnr _skal_ være en int + { + return false; + } + + if (int.TryParse(afsenderTidsstempel.Trim(), out result) == false) // afsenderTidsstempel _skal_ være en int + { + return false; + } + + if (int.TryParse(transaktionsLaengde.Trim(), out result) == false) // transaktionsLaengde _skal_ være en int + { + return false; + } + + if ( int.TryParse(prioritet.Trim(), out result) == false ) // prioritet _skal_ være en int + { + return false; + } + + return true; + } + private void addLogEntry(string msg) { msg = getNowString() + " " + msg;