123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896789778987899790079017902790379047905790679077908790979107911791279137914791579167917791879197920792179227923792479257926792779287929793079317932793379347935793679377938793979407941794279437944794579467947794879497950795179527953795479557956795779587959796079617962796379647965796679677968796979707971797279737974797579767977797879797980798179827983798479857986798779887989799079917992799379947995799679977998799980008001800280038004800580068007800880098010801180128013801480158016801780188019802080218022802380248025802680278028802980308031803280338034803580368037803880398040804180428043804480458046804780488049805080518052805380548055805680578058805980608061806280638064806580668067806880698070807180728073807480758076807780788079808080818082808380848085808680878088808980908091809280938094809580968097809880998100810181028103810481058106810781088109811081118112811381148115811681178118811981208121812281238124812581268127812881298130813181328133813481358136813781388139814081418142814381448145814681478148814981508151815281538154815581568157815881598160816181628163816481658166816781688169817081718172817381748175817681778178817981808181818281838184818581868187818881898190819181928193819481958196819781988199820082018202820382048205820682078208820982108211821282138214821582168217821882198220822182228223822482258226822782288229823082318232823382348235823682378238823982408241824282438244824582468247824882498250825182528253825482558256825782588259826082618262826382648265826682678268826982708271827282738274827582768277827882798280828182828283828482858286828782888289829082918292829382948295829682978298829983008301830283038304830583068307830883098310831183128313831483158316831783188319832083218322832383248325832683278328832983308331833283338334833583368337833883398340834183428343834483458346834783488349835083518352835383548355835683578358835983608361836283638364836583668367836883698370837183728373837483758376837783788379838083818382838383848385838683878388838983908391839283938394839583968397839883998400840184028403840484058406840784088409841084118412841384148415841684178418841984208421842284238424842584268427842884298430843184328433843484358436843784388439844084418442844384448445844684478448844984508451845284538454845584568457845884598460846184628463846484658466846784688469847084718472847384748475847684778478847984808481848284838484848584868487848884898490849184928493849484958496849784988499850085018502850385048505850685078508850985108511851285138514851585168517851885198520852185228523852485258526852785288529853085318532853385348535853685378538853985408541854285438544854585468547854885498550855185528553855485558556855785588559856085618562856385648565856685678568856985708571857285738574857585768577857885798580858185828583858485858586858785888589859085918592859385948595859685978598859986008601860286038604860586068607860886098610861186128613861486158616861786188619862086218622862386248625862686278628862986308631863286338634863586368637863886398640864186428643864486458646864786488649865086518652865386548655865686578658865986608661866286638664866586668667866886698670867186728673867486758676867786788679868086818682868386848685868686878688868986908691869286938694869586968697869886998700870187028703870487058706870787088709871087118712871387148715871687178718871987208721872287238724872587268727872887298730873187328733873487358736873787388739874087418742874387448745874687478748874987508751875287538754875587568757875887598760876187628763876487658766876787688769877087718772877387748775877687778778877987808781878287838784878587868787878887898790879187928793879487958796879787988799880088018802880388048805880688078808880988108811881288138814881588168817881888198820882188228823882488258826882788288829883088318832883388348835883688378838883988408841884288438844884588468847884888498850885188528853885488558856885788588859886088618862886388648865886688678868886988708871887288738874887588768877887888798880888188828883888488858886888788888889889088918892889388948895889688978898889989008901890289038904890589068907890889098910891189128913891489158916891789188919892089218922892389248925892689278928892989308931893289338934893589368937893889398940894189428943894489458946894789488949895089518952895389548955895689578958895989608961896289638964896589668967896889698970897189728973897489758976897789788979898089818982898389848985898689878988898989908991899289938994899589968997899889999000900190029003900490059006900790089009901090119012901390149015901690179018901990209021902290239024902590269027902890299030903190329033903490359036903790389039904090419042904390449045904690479048904990509051905290539054905590569057905890599060906190629063906490659066906790689069907090719072907390749075907690779078907990809081908290839084908590869087908890899090909190929093909490959096909790989099910091019102910391049105910691079108910991109111911291139114911591169117911891199120912191229123912491259126912791289129913091319132913391349135913691379138913991409141914291439144914591469147914891499150915191529153915491559156915791589159916091619162916391649165916691679168916991709171917291739174917591769177917891799180918191829183918491859186918791889189919091919192919391949195919691979198919992009201920292039204920592069207920892099210921192129213921492159216921792189219922092219222922392249225922692279228922992309231923292339234923592369237923892399240924192429243924492459246924792489249925092519252925392549255925692579258925992609261926292639264926592669267926892699270927192729273927492759276927792789279928092819282928392849285928692879288928992909291929292939294929592969297929892999300930193029303930493059306930793089309931093119312931393149315931693179318931993209321932293239324932593269327932893299330933193329333933493359336933793389339934093419342934393449345934693479348934993509351935293539354935593569357935893599360936193629363936493659366936793689369937093719372937393749375937693779378937993809381938293839384938593869387938893899390939193929393939493959396939793989399940094019402940394049405940694079408940994109411941294139414941594169417941894199420942194229423942494259426942794289429943094319432943394349435943694379438943994409441944294439444944594469447944894499450945194529453945494559456945794589459946094619462946394649465946694679468946994709471947294739474947594769477947894799480948194829483948494859486948794889489949094919492949394949495949694979498949995009501950295039504950595069507950895099510951195129513951495159516951795189519952095219522952395249525952695279528952995309531953295339534953595369537953895399540954195429543954495459546954795489549955095519552955395549555955695579558955995609561956295639564956595669567956895699570957195729573957495759576957795789579958095819582958395849585958695879588958995909591959295939594959595969597959895999600960196029603960496059606960796089609961096119612961396149615961696179618961996209621962296239624962596269627962896299630963196329633963496359636963796389639964096419642964396449645964696479648964996509651965296539654965596569657965896599660966196629663966496659666966796689669967096719672967396749675967696779678967996809681968296839684968596869687968896899690969196929693969496959696969796989699970097019702970397049705970697079708970997109711971297139714971597169717971897199720972197229723972497259726972797289729973097319732973397349735973697379738973997409741974297439744974597469747974897499750975197529753975497559756975797589759976097619762976397649765976697679768976997709771977297739774977597769777977897799780978197829783978497859786978797889789979097919792979397949795979697979798979998009801980298039804980598069807980898099810981198129813981498159816981798189819982098219822982398249825982698279828982998309831983298339834983598369837983898399840984198429843984498459846984798489849985098519852985398549855985698579858985998609861986298639864986598669867986898699870987198729873987498759876987798789879988098819882988398849885988698879888988998909891989298939894989598969897989898999900990199029903990499059906990799089909991099119912991399149915991699179918991999209921992299239924992599269927992899299930993199329933993499359936993799389939994099419942994399449945994699479948994999509951995299539954995599569957995899599960996199629963996499659966996799689969997099719972997399749975997699779978997999809981998299839984998599869987998899899990999199929993999499959996999799989999100001000110002100031000410005100061000710008100091001010011100121001310014100151001610017100181001910020100211002210023100241002510026100271002810029100301003110032100331003410035100361003710038100391004010041100421004310044100451004610047100481004910050100511005210053100541005510056100571005810059100601006110062100631006410065100661006710068100691007010071100721007310074100751007610077100781007910080100811008210083100841008510086100871008810089100901009110092100931009410095100961009710098100991010010101101021010310104101051010610107101081010910110101111011210113101141011510116101171011810119101201012110122101231012410125101261012710128101291013010131101321013310134101351013610137101381013910140101411014210143101441014510146101471014810149101501015110152101531015410155101561015710158101591016010161101621016310164101651016610167101681016910170101711017210173101741017510176101771017810179101801018110182101831018410185101861018710188101891019010191101921019310194101951019610197101981019910200102011020210203102041020510206102071020810209102101021110212102131021410215102161021710218102191022010221102221022310224102251022610227102281022910230102311023210233102341023510236102371023810239102401024110242102431024410245102461024710248102491025010251102521025310254102551025610257102581025910260102611026210263102641026510266102671026810269102701027110272102731027410275102761027710278102791028010281102821028310284102851028610287102881028910290102911029210293102941029510296102971029810299103001030110302103031030410305103061030710308103091031010311103121031310314103151031610317103181031910320103211032210323103241032510326103271032810329103301033110332103331033410335103361033710338103391034010341103421034310344103451034610347103481034910350103511035210353103541035510356103571035810359103601036110362103631036410365103661036710368103691037010371103721037310374103751037610377103781037910380103811038210383103841038510386103871038810389103901039110392103931039410395103961039710398103991040010401104021040310404104051040610407104081040910410104111041210413104141041510416104171041810419104201042110422104231042410425104261042710428104291043010431104321043310434104351043610437104381043910440104411044210443104441044510446104471044810449104501045110452104531045410455104561045710458104591046010461104621046310464104651046610467104681046910470104711047210473104741047510476104771047810479104801048110482104831048410485104861048710488104891049010491104921049310494104951049610497104981049910500105011050210503105041050510506105071050810509105101051110512105131051410515105161051710518105191052010521105221052310524105251052610527105281052910530105311053210533105341053510536105371053810539105401054110542105431054410545105461054710548105491055010551105521055310554105551055610557105581055910560105611056210563105641056510566105671056810569105701057110572105731057410575105761057710578105791058010581105821058310584105851058610587105881058910590105911059210593105941059510596105971059810599106001060110602106031060410605106061060710608106091061010611106121061310614106151061610617106181061910620106211062210623106241062510626106271062810629106301063110632106331063410635106361063710638106391064010641106421064310644106451064610647106481064910650106511065210653106541065510656106571065810659106601066110662106631066410665106661066710668106691067010671106721067310674106751067610677106781067910680106811068210683106841068510686106871068810689106901069110692106931069410695106961069710698106991070010701107021070310704107051070610707107081070910710107111071210713107141071510716107171071810719107201072110722107231072410725107261072710728107291073010731107321073310734107351073610737107381073910740107411074210743107441074510746107471074810749107501075110752107531075410755107561075710758107591076010761107621076310764107651076610767107681076910770107711077210773107741077510776107771077810779107801078110782107831078410785107861078710788107891079010791107921079310794107951079610797107981079910800108011080210803108041080510806108071080810809108101081110812108131081410815108161081710818108191082010821108221082310824108251082610827108281082910830108311083210833108341083510836108371083810839108401084110842108431084410845108461084710848108491085010851108521085310854108551085610857108581085910860108611086210863108641086510866108671086810869108701087110872108731087410875108761087710878108791088010881108821088310884108851088610887108881088910890108911089210893108941089510896108971089810899109001090110902109031090410905109061090710908109091091010911109121091310914109151091610917109181091910920109211092210923109241092510926109271092810929109301093110932109331093410935109361093710938109391094010941109421094310944109451094610947109481094910950109511095210953109541095510956109571095810959109601096110962109631096410965109661096710968109691097010971109721097310974109751097610977109781097910980109811098210983109841098510986109871098810989109901099110992109931099410995109961099710998109991100011001110021100311004110051100611007110081100911010110111101211013110141101511016110171101811019110201102111022110231102411025110261102711028110291103011031110321103311034110351103611037110381103911040110411104211043110441104511046110471104811049110501105111052110531105411055110561105711058110591106011061110621106311064110651106611067110681106911070110711107211073110741107511076110771107811079110801108111082110831108411085110861108711088110891109011091110921109311094110951109611097110981109911100111011110211103111041110511106111071110811109111101111111112111131111411115111161111711118111191112011121111221112311124111251112611127111281112911130111311113211133111341113511136111371113811139111401114111142111431114411145111461114711148111491115011151111521115311154111551115611157111581115911160111611116211163111641116511166111671116811169111701117111172111731117411175111761117711178111791118011181111821118311184111851118611187111881118911190111911119211193111941119511196111971119811199112001120111202112031120411205112061120711208112091121011211112121121311214112151121611217112181121911220112211122211223112241122511226112271122811229112301123111232112331123411235112361123711238112391124011241112421124311244112451124611247112481124911250112511125211253112541125511256112571125811259112601126111262112631126411265112661126711268112691127011271112721127311274112751127611277112781127911280112811128211283112841128511286112871128811289112901129111292112931129411295112961129711298112991130011301113021130311304113051130611307113081130911310113111131211313113141131511316113171131811319113201132111322113231132411325113261132711328113291133011331113321133311334113351133611337113381133911340113411134211343113441134511346113471134811349113501135111352113531135411355113561135711358113591136011361113621136311364113651136611367113681136911370113711137211373113741137511376113771137811379113801138111382113831138411385113861138711388113891139011391113921139311394113951139611397113981139911400114011140211403114041140511406114071140811409114101141111412114131141411415114161141711418114191142011421114221142311424114251142611427114281142911430114311143211433114341143511436114371143811439114401144111442114431144411445114461144711448114491145011451114521145311454114551145611457114581145911460114611146211463114641146511466114671146811469114701147111472114731147411475114761147711478114791148011481114821148311484114851148611487114881148911490114911149211493114941149511496114971149811499115001150111502115031150411505115061150711508115091151011511115121151311514115151151611517115181151911520115211152211523115241152511526115271152811529115301153111532115331153411535115361153711538115391154011541115421154311544115451154611547115481154911550115511155211553115541155511556115571155811559115601156111562115631156411565115661156711568115691157011571115721157311574115751157611577115781157911580115811158211583115841158511586115871158811589115901159111592115931159411595115961159711598115991160011601116021160311604116051160611607116081160911610116111161211613116141161511616116171161811619116201162111622116231162411625116261162711628116291163011631116321163311634116351163611637116381163911640116411164211643116441164511646116471164811649116501165111652116531165411655116561165711658116591166011661116621166311664116651166611667116681166911670116711167211673116741167511676116771167811679116801168111682116831168411685116861168711688116891169011691116921169311694116951169611697116981169911700117011170211703117041170511706117071170811709117101171111712117131171411715117161171711718117191172011721117221172311724117251172611727117281172911730117311173211733117341173511736117371173811739117401174111742117431174411745117461174711748117491175011751117521175311754117551175611757117581175911760117611176211763117641176511766117671176811769117701177111772117731177411775117761177711778117791178011781117821178311784117851178611787117881178911790117911179211793117941179511796117971179811799118001180111802118031180411805118061180711808118091181011811118121181311814118151181611817118181181911820118211182211823118241182511826118271182811829118301183111832118331183411835118361183711838118391184011841118421184311844118451184611847118481184911850118511185211853118541185511856118571185811859118601186111862118631186411865118661186711868118691187011871118721187311874118751187611877118781187911880118811188211883118841188511886118871188811889118901189111892118931189411895118961189711898118991190011901119021190311904119051190611907119081190911910119111191211913119141191511916119171191811919119201192111922119231192411925119261192711928119291193011931119321193311934119351193611937119381193911940119411194211943119441194511946119471194811949119501195111952119531195411955119561195711958119591196011961119621196311964119651196611967119681196911970119711197211973119741197511976119771197811979119801198111982119831198411985119861198711988119891199011991119921199311994119951199611997119981199912000120011200212003120041200512006120071200812009120101201112012120131201412015120161201712018120191202012021120221202312024120251202612027120281202912030120311203212033120341203512036120371203812039120401204112042120431204412045120461204712048120491205012051120521205312054120551205612057120581205912060120611206212063120641206512066120671206812069120701207112072120731207412075120761207712078120791208012081120821208312084120851208612087120881208912090120911209212093120941209512096120971209812099121001210112102121031210412105121061210712108121091211012111121121211312114121151211612117121181211912120121211212212123121241212512126121271212812129121301213112132121331213412135121361213712138121391214012141121421214312144121451214612147121481214912150121511215212153121541215512156121571215812159121601216112162121631216412165121661216712168121691217012171121721217312174121751217612177121781217912180121811218212183121841218512186121871218812189121901219112192121931219412195121961219712198121991220012201122021220312204122051220612207122081220912210122111221212213122141221512216122171221812219122201222112222122231222412225122261222712228122291223012231122321223312234122351223612237122381223912240122411224212243122441224512246122471224812249122501225112252122531225412255122561225712258122591226012261122621226312264122651226612267122681226912270122711227212273122741227512276122771227812279122801228112282122831228412285122861228712288122891229012291122921229312294122951229612297122981229912300123011230212303123041230512306123071230812309123101231112312123131231412315123161231712318123191232012321123221232312324123251232612327123281232912330123311233212333123341233512336123371233812339123401234112342123431234412345123461234712348123491235012351123521235312354123551235612357123581235912360123611236212363123641236512366123671236812369123701237112372123731237412375123761237712378123791238012381123821238312384123851238612387123881238912390123911239212393123941239512396123971239812399124001240112402124031240412405124061240712408124091241012411124121241312414124151241612417124181241912420124211242212423124241242512426124271242812429124301243112432124331243412435124361243712438124391244012441124421244312444124451244612447124481244912450124511245212453124541245512456124571245812459124601246112462124631246412465124661246712468124691247012471124721247312474124751247612477124781247912480124811248212483124841248512486124871248812489124901249112492124931249412495124961249712498124991250012501125021250312504125051250612507125081250912510125111251212513125141251512516125171251812519125201252112522125231252412525125261252712528125291253012531125321253312534125351253612537125381253912540125411254212543125441254512546125471254812549125501255112552125531255412555125561255712558125591256012561125621256312564125651256612567125681256912570125711257212573125741257512576125771257812579125801258112582125831258412585125861258712588125891259012591125921259312594125951259612597125981259912600126011260212603126041260512606126071260812609126101261112612126131261412615126161261712618126191262012621126221262312624126251262612627126281262912630126311263212633126341263512636126371263812639126401264112642126431264412645126461264712648126491265012651126521265312654126551265612657126581265912660126611266212663126641266512666126671266812669126701267112672126731267412675126761267712678126791268012681126821268312684126851268612687126881268912690126911269212693126941269512696126971269812699127001270112702127031270412705127061270712708127091271012711127121271312714127151271612717127181271912720127211272212723127241272512726127271272812729127301273112732127331273412735127361273712738127391274012741127421274312744127451274612747127481274912750127511275212753127541275512756127571275812759127601276112762127631276412765127661276712768127691277012771127721277312774127751277612777127781277912780127811278212783127841278512786127871278812789127901279112792127931279412795127961279712798127991280012801128021280312804128051280612807128081280912810128111281212813128141281512816128171281812819128201282112822128231282412825128261282712828128291283012831128321283312834128351283612837128381283912840128411284212843128441284512846128471284812849128501285112852128531285412855128561285712858128591286012861128621286312864128651286612867128681286912870128711287212873128741287512876128771287812879128801288112882128831288412885128861288712888128891289012891128921289312894128951289612897128981289912900129011290212903129041290512906129071290812909129101291112912129131291412915129161291712918129191292012921129221292312924129251292612927129281292912930129311293212933129341293512936129371293812939129401294112942129431294412945129461294712948129491295012951129521295312954129551295612957129581295912960129611296212963129641296512966129671296812969129701297112972129731297412975129761297712978129791298012981129821298312984129851298612987129881298912990129911299212993129941299512996129971299812999130001300113002130031300413005130061300713008130091301013011130121301313014130151301613017130181301913020130211302213023130241302513026130271302813029130301303113032130331303413035130361303713038130391304013041130421304313044130451304613047130481304913050130511305213053130541305513056130571305813059130601306113062130631306413065130661306713068130691307013071130721307313074130751307613077130781307913080130811308213083130841308513086130871308813089130901309113092130931309413095130961309713098130991310013101131021310313104131051310613107131081310913110131111311213113131141311513116131171311813119131201312113122131231312413125131261312713128131291313013131131321313313134131351313613137131381313913140131411314213143131441314513146131471314813149131501315113152131531315413155131561315713158131591316013161131621316313164131651316613167131681316913170131711317213173131741317513176131771317813179131801318113182131831318413185131861318713188131891319013191131921319313194131951319613197131981319913200132011320213203132041320513206132071320813209132101321113212132131321413215132161321713218132191322013221132221322313224132251322613227132281322913230132311323213233132341323513236132371323813239132401324113242132431324413245132461324713248132491325013251132521325313254132551325613257132581325913260132611326213263132641326513266132671326813269132701327113272132731327413275132761327713278132791328013281132821328313284132851328613287132881328913290132911329213293132941329513296132971329813299133001330113302133031330413305133061330713308133091331013311133121331313314133151331613317133181331913320133211332213323133241332513326133271332813329133301333113332133331333413335133361333713338133391334013341133421334313344133451334613347133481334913350133511335213353133541335513356133571335813359133601336113362133631336413365133661336713368133691337013371133721337313374133751337613377133781337913380133811338213383133841338513386133871338813389133901339113392133931339413395133961339713398133991340013401134021340313404134051340613407134081340913410134111341213413134141341513416134171341813419134201342113422134231342413425134261342713428134291343013431134321343313434134351343613437134381343913440134411344213443134441344513446134471344813449134501345113452134531345413455134561345713458134591346013461134621346313464134651346613467134681346913470134711347213473134741347513476134771347813479134801348113482134831348413485134861348713488134891349013491134921349313494134951349613497134981349913500135011350213503135041350513506135071350813509135101351113512135131351413515135161351713518135191352013521135221352313524135251352613527135281352913530135311353213533135341353513536135371353813539135401354113542135431354413545135461354713548135491355013551135521355313554135551355613557135581355913560135611356213563135641356513566135671356813569135701357113572135731357413575135761357713578135791358013581135821358313584135851358613587135881358913590135911359213593135941359513596135971359813599136001360113602136031360413605136061360713608136091361013611136121361313614136151361613617136181361913620136211362213623136241362513626136271362813629136301363113632136331363413635136361363713638136391364013641136421364313644136451364613647136481364913650136511365213653136541365513656136571365813659136601366113662136631366413665136661366713668136691367013671136721367313674136751367613677136781367913680136811368213683136841368513686136871368813689136901369113692136931369413695136961369713698136991370013701137021370313704137051370613707137081370913710137111371213713137141371513716137171371813719137201372113722137231372413725137261372713728137291373013731137321373313734137351373613737137381373913740137411374213743137441374513746137471374813749137501375113752137531375413755137561375713758137591376013761137621376313764137651376613767137681376913770137711377213773137741377513776137771377813779137801378113782137831378413785137861378713788137891379013791137921379313794137951379613797137981379913800138011380213803138041380513806138071380813809138101381113812138131381413815138161381713818138191382013821138221382313824138251382613827138281382913830138311383213833138341383513836138371383813839138401384113842138431384413845138461384713848138491385013851138521385313854138551385613857138581385913860138611386213863138641386513866138671386813869138701387113872138731387413875138761387713878138791388013881138821388313884138851388613887138881388913890138911389213893138941389513896138971389813899139001390113902139031390413905139061390713908139091391013911139121391313914139151391613917139181391913920139211392213923139241392513926139271392813929139301393113932139331393413935139361393713938139391394013941139421394313944139451394613947139481394913950139511395213953139541395513956139571395813959139601396113962139631396413965139661396713968139691397013971139721397313974139751397613977139781397913980139811398213983139841398513986139871398813989139901399113992139931399413995139961399713998139991400014001140021400314004140051400614007140081400914010140111401214013140141401514016140171401814019140201402114022140231402414025140261402714028140291403014031140321403314034140351403614037140381403914040140411404214043140441404514046140471404814049140501405114052140531405414055140561405714058140591406014061140621406314064140651406614067140681406914070140711407214073140741407514076140771407814079140801408114082140831408414085140861408714088140891409014091140921409314094140951409614097140981409914100141011410214103141041410514106141071410814109141101411114112141131411414115141161411714118141191412014121141221412314124141251412614127141281412914130141311413214133141341413514136141371413814139141401414114142141431414414145141461414714148141491415014151141521415314154141551415614157141581415914160141611416214163141641416514166141671416814169141701417114172141731417414175141761417714178141791418014181141821418314184141851418614187141881418914190141911419214193141941419514196141971419814199142001420114202142031420414205142061420714208142091421014211142121421314214142151421614217142181421914220142211422214223142241422514226142271422814229142301423114232142331423414235142361423714238142391424014241142421424314244142451424614247142481424914250142511425214253142541425514256142571425814259142601426114262142631426414265142661426714268142691427014271142721427314274142751427614277142781427914280142811428214283142841428514286142871428814289142901429114292142931429414295142961429714298142991430014301143021430314304143051430614307143081430914310143111431214313143141431514316143171431814319143201432114322143231432414325143261432714328143291433014331143321433314334143351433614337143381433914340143411434214343143441434514346143471434814349143501435114352143531435414355143561435714358143591436014361143621436314364143651436614367143681436914370143711437214373143741437514376143771437814379143801438114382143831438414385143861438714388143891439014391143921439314394143951439614397143981439914400144011440214403144041440514406144071440814409144101441114412144131441414415144161441714418144191442014421144221442314424144251442614427144281442914430144311443214433144341443514436144371443814439144401444114442144431444414445144461444714448144491445014451144521445314454144551445614457144581445914460144611446214463144641446514466144671446814469144701447114472144731447414475144761447714478144791448014481144821448314484144851448614487144881448914490144911449214493144941449514496144971449814499145001450114502145031450414505145061450714508145091451014511145121451314514145151451614517145181451914520145211452214523145241452514526145271452814529145301453114532145331453414535145361453714538145391454014541145421454314544145451454614547145481454914550145511455214553145541455514556145571455814559145601456114562145631456414565145661456714568145691457014571145721457314574145751457614577145781457914580145811458214583145841458514586145871458814589145901459114592145931459414595145961459714598145991460014601146021460314604146051460614607146081460914610146111461214613146141461514616146171461814619146201462114622146231462414625146261462714628146291463014631146321463314634146351463614637146381463914640146411464214643146441464514646146471464814649146501465114652146531465414655146561465714658146591466014661146621466314664146651466614667146681466914670146711467214673146741467514676146771467814679146801468114682146831468414685146861468714688146891469014691146921469314694146951469614697146981469914700147011470214703147041470514706147071470814709147101471114712147131471414715147161471714718147191472014721147221472314724147251472614727147281472914730147311473214733147341473514736147371473814739147401474114742147431474414745147461474714748147491475014751147521475314754147551475614757147581475914760147611476214763147641476514766147671476814769147701477114772147731477414775147761477714778147791478014781147821478314784147851478614787147881478914790147911479214793147941479514796147971479814799148001480114802148031480414805148061480714808148091481014811148121481314814148151481614817148181481914820148211482214823148241482514826148271482814829148301483114832148331483414835148361483714838148391484014841148421484314844148451484614847148481484914850148511485214853148541485514856148571485814859148601486114862148631486414865148661486714868148691487014871148721487314874148751487614877148781487914880148811488214883148841488514886148871488814889148901489114892148931489414895148961489714898148991490014901149021490314904149051490614907149081490914910149111491214913149141491514916149171491814919149201492114922149231492414925149261492714928149291493014931149321493314934149351493614937149381493914940149411494214943149441494514946149471494814949149501495114952149531495414955149561495714958149591496014961149621496314964149651496614967149681496914970149711497214973149741497514976149771497814979149801498114982149831498414985149861498714988149891499014991149921499314994149951499614997149981499915000150011500215003150041500515006150071500815009150101501115012150131501415015150161501715018150191502015021150221502315024150251502615027150281502915030150311503215033150341503515036150371503815039150401504115042150431504415045150461504715048150491505015051150521505315054150551505615057150581505915060150611506215063150641506515066150671506815069150701507115072150731507415075150761507715078150791508015081150821508315084150851508615087150881508915090150911509215093150941509515096150971509815099151001510115102151031510415105151061510715108151091511015111151121511315114151151511615117151181511915120151211512215123151241512515126151271512815129151301513115132151331513415135151361513715138151391514015141151421514315144151451514615147151481514915150151511515215153151541515515156151571515815159151601516115162151631516415165151661516715168151691517015171151721517315174151751517615177151781517915180151811518215183151841518515186151871518815189151901519115192151931519415195151961519715198151991520015201152021520315204152051520615207152081520915210152111521215213152141521515216152171521815219152201522115222152231522415225152261522715228152291523015231152321523315234152351523615237152381523915240152411524215243152441524515246152471524815249152501525115252152531525415255152561525715258152591526015261152621526315264152651526615267152681526915270152711527215273152741527515276152771527815279152801528115282152831528415285152861528715288152891529015291152921529315294152951529615297152981529915300153011530215303153041530515306153071530815309153101531115312153131531415315153161531715318153191532015321153221532315324153251532615327153281532915330153311533215333153341533515336153371533815339153401534115342153431534415345153461534715348153491535015351153521535315354153551535615357153581535915360153611536215363153641536515366153671536815369153701537115372153731537415375153761537715378153791538015381153821538315384153851538615387153881538915390153911539215393153941539515396153971539815399154001540115402154031540415405154061540715408154091541015411154121541315414154151541615417154181541915420154211542215423154241542515426154271542815429154301543115432154331543415435154361543715438154391544015441154421544315444154451544615447154481544915450154511545215453154541545515456154571545815459154601546115462154631546415465154661546715468154691547015471154721547315474154751547615477154781547915480154811548215483154841548515486154871548815489154901549115492154931549415495154961549715498154991550015501155021550315504155051550615507155081550915510155111551215513155141551515516155171551815519155201552115522155231552415525155261552715528155291553015531155321553315534155351553615537155381553915540155411554215543155441554515546155471554815549155501555115552155531555415555155561555715558155591556015561155621556315564155651556615567155681556915570155711557215573155741557515576155771557815579155801558115582155831558415585155861558715588155891559015591155921559315594155951559615597155981559915600156011560215603156041560515606156071560815609156101561115612156131561415615156161561715618156191562015621156221562315624156251562615627156281562915630156311563215633156341563515636156371563815639156401564115642156431564415645156461564715648156491565015651156521565315654156551565615657156581565915660156611566215663156641566515666156671566815669156701567115672156731567415675156761567715678156791568015681156821568315684156851568615687156881568915690156911569215693156941569515696156971569815699157001570115702157031570415705157061570715708157091571015711157121571315714157151571615717157181571915720157211572215723157241572515726157271572815729157301573115732157331573415735157361573715738157391574015741157421574315744157451574615747157481574915750157511575215753157541575515756157571575815759157601576115762157631576415765157661576715768157691577015771157721577315774157751577615777157781577915780157811578215783157841578515786157871578815789157901579115792157931579415795157961579715798157991580015801158021580315804158051580615807158081580915810158111581215813158141581515816158171581815819158201582115822158231582415825158261582715828158291583015831158321583315834158351583615837158381583915840158411584215843158441584515846158471584815849158501585115852158531585415855158561585715858158591586015861158621586315864158651586615867158681586915870158711587215873158741587515876158771587815879158801588115882158831588415885158861588715888158891589015891158921589315894158951589615897158981589915900159011590215903159041590515906159071590815909159101591115912159131591415915159161591715918159191592015921159221592315924159251592615927159281592915930159311593215933159341593515936159371593815939159401594115942159431594415945159461594715948159491595015951159521595315954159551595615957159581595915960159611596215963159641596515966159671596815969159701597115972159731597415975159761597715978159791598015981159821598315984159851598615987159881598915990159911599215993159941599515996159971599815999160001600116002160031600416005160061600716008160091601016011160121601316014160151601616017160181601916020160211602216023160241602516026160271602816029160301603116032160331603416035160361603716038160391604016041160421604316044160451604616047160481604916050160511605216053160541605516056160571605816059160601606116062160631606416065160661606716068160691607016071160721607316074160751607616077160781607916080160811608216083160841608516086160871608816089160901609116092160931609416095160961609716098160991610016101161021610316104161051610616107161081610916110161111611216113161141611516116161171611816119161201612116122161231612416125161261612716128161291613016131161321613316134161351613616137161381613916140161411614216143161441614516146161471614816149161501615116152161531615416155161561615716158161591616016161161621616316164161651616616167161681616916170161711617216173161741617516176161771617816179161801618116182161831618416185161861618716188161891619016191161921619316194161951619616197161981619916200162011620216203162041620516206162071620816209162101621116212162131621416215162161621716218162191622016221162221622316224162251622616227162281622916230162311623216233162341623516236162371623816239162401624116242162431624416245162461624716248162491625016251162521625316254162551625616257162581625916260162611626216263162641626516266162671626816269162701627116272162731627416275162761627716278162791628016281162821628316284162851628616287162881628916290162911629216293162941629516296162971629816299163001630116302163031630416305163061630716308163091631016311163121631316314163151631616317163181631916320163211632216323163241632516326163271632816329163301633116332163331633416335163361633716338163391634016341163421634316344163451634616347163481634916350163511635216353163541635516356163571635816359163601636116362163631636416365163661636716368163691637016371163721637316374163751637616377163781637916380163811638216383163841638516386163871638816389163901639116392163931639416395163961639716398163991640016401164021640316404164051640616407164081640916410164111641216413164141641516416164171641816419164201642116422164231642416425164261642716428164291643016431164321643316434164351643616437164381643916440164411644216443164441644516446164471644816449164501645116452164531645416455164561645716458164591646016461164621646316464164651646616467164681646916470164711647216473164741647516476164771647816479164801648116482164831648416485164861648716488164891649016491164921649316494164951649616497164981649916500165011650216503165041650516506165071650816509165101651116512165131651416515165161651716518165191652016521165221652316524165251652616527165281652916530165311653216533165341653516536165371653816539165401654116542165431654416545165461654716548165491655016551165521655316554165551655616557165581655916560165611656216563165641656516566165671656816569165701657116572165731657416575165761657716578165791658016581165821658316584165851658616587165881658916590165911659216593165941659516596165971659816599166001660116602166031660416605166061660716608166091661016611166121661316614166151661616617166181661916620166211662216623166241662516626166271662816629166301663116632166331663416635166361663716638166391664016641166421664316644166451664616647166481664916650166511665216653166541665516656166571665816659166601666116662166631666416665166661666716668166691667016671166721667316674166751667616677166781667916680166811668216683166841668516686166871668816689166901669116692166931669416695166961669716698166991670016701167021670316704167051670616707167081670916710167111671216713167141671516716167171671816719167201672116722167231672416725167261672716728167291673016731167321673316734167351673616737167381673916740167411674216743167441674516746167471674816749167501675116752167531675416755167561675716758167591676016761167621676316764167651676616767167681676916770167711677216773167741677516776167771677816779167801678116782167831678416785167861678716788167891679016791167921679316794167951679616797167981679916800168011680216803168041680516806168071680816809168101681116812168131681416815168161681716818168191682016821168221682316824168251682616827168281682916830168311683216833168341683516836168371683816839168401684116842168431684416845168461684716848168491685016851168521685316854168551685616857168581685916860168611686216863168641686516866168671686816869168701687116872168731687416875168761687716878168791688016881168821688316884168851688616887168881688916890168911689216893168941689516896168971689816899169001690116902169031690416905169061690716908169091691016911169121691316914169151691616917169181691916920169211692216923169241692516926169271692816929169301693116932169331693416935169361693716938169391694016941169421694316944169451694616947169481694916950169511695216953169541695516956169571695816959169601696116962169631696416965169661696716968169691697016971169721697316974169751697616977169781697916980169811698216983169841698516986169871698816989169901699116992169931699416995169961699716998169991700017001170021700317004170051700617007170081700917010170111701217013170141701517016170171701817019170201702117022170231702417025170261702717028170291703017031170321703317034170351703617037170381703917040170411704217043170441704517046170471704817049170501705117052170531705417055170561705717058170591706017061170621706317064170651706617067170681706917070170711707217073170741707517076170771707817079170801708117082170831708417085170861708717088170891709017091170921709317094170951709617097170981709917100171011710217103171041710517106171071710817109171101711117112171131711417115171161711717118171191712017121171221712317124171251712617127171281712917130171311713217133171341713517136171371713817139171401714117142171431714417145171461714717148171491715017151171521715317154171551715617157171581715917160171611716217163171641716517166171671716817169171701717117172171731717417175171761717717178171791718017181171821718317184171851718617187171881718917190171911719217193171941719517196171971719817199172001720117202172031720417205172061720717208172091721017211172121721317214172151721617217172181721917220172211722217223172241722517226172271722817229172301723117232172331723417235172361723717238172391724017241172421724317244172451724617247172481724917250172511725217253172541725517256172571725817259172601726117262172631726417265172661726717268172691727017271172721727317274172751727617277172781727917280172811728217283172841728517286172871728817289172901729117292172931729417295172961729717298172991730017301173021730317304173051730617307173081730917310173111731217313173141731517316173171731817319173201732117322173231732417325173261732717328173291733017331173321733317334173351733617337173381733917340173411734217343173441734517346173471734817349173501735117352173531735417355173561735717358173591736017361173621736317364173651736617367173681736917370173711737217373173741737517376173771737817379173801738117382173831738417385173861738717388173891739017391173921739317394173951739617397173981739917400174011740217403174041740517406174071740817409174101741117412174131741417415174161741717418174191742017421174221742317424174251742617427174281742917430174311743217433174341743517436174371743817439174401744117442174431744417445174461744717448174491745017451174521745317454174551745617457174581745917460174611746217463174641746517466174671746817469174701747117472174731747417475174761747717478174791748017481174821748317484174851748617487174881748917490174911749217493174941749517496174971749817499175001750117502175031750417505175061750717508175091751017511175121751317514175151751617517175181751917520175211752217523175241752517526175271752817529175301753117532175331753417535175361753717538175391754017541175421754317544175451754617547175481754917550175511755217553175541755517556175571755817559175601756117562175631756417565175661756717568175691757017571175721757317574175751757617577175781757917580175811758217583175841758517586175871758817589175901759117592175931759417595175961759717598175991760017601176021760317604176051760617607176081760917610176111761217613176141761517616176171761817619176201762117622176231762417625176261762717628176291763017631176321763317634176351763617637176381763917640176411764217643176441764517646176471764817649176501765117652176531765417655176561765717658176591766017661176621766317664176651766617667176681766917670176711767217673176741767517676176771767817679176801768117682176831768417685176861768717688176891769017691176921769317694176951769617697176981769917700177011770217703177041770517706177071770817709177101771117712177131771417715177161771717718177191772017721177221772317724177251772617727177281772917730177311773217733177341773517736177371773817739177401774117742177431774417745177461774717748177491775017751177521775317754177551775617757177581775917760177611776217763177641776517766177671776817769177701777117772177731777417775177761777717778177791778017781177821778317784177851778617787177881778917790177911779217793177941779517796177971779817799178001780117802178031780417805178061780717808178091781017811178121781317814178151781617817178181781917820178211782217823178241782517826178271782817829178301783117832178331783417835178361783717838178391784017841178421784317844178451784617847178481784917850178511785217853178541785517856178571785817859178601786117862178631786417865178661786717868178691787017871178721787317874178751787617877178781787917880178811788217883178841788517886178871788817889178901789117892178931789417895178961789717898178991790017901179021790317904179051790617907179081790917910179111791217913179141791517916179171791817919179201792117922179231792417925179261792717928179291793017931179321793317934179351793617937179381793917940179411794217943179441794517946179471794817949179501795117952179531795417955179561795717958179591796017961179621796317964179651796617967179681796917970179711797217973179741797517976179771797817979179801798117982179831798417985179861798717988179891799017991179921799317994179951799617997179981799918000180011800218003180041800518006180071800818009180101801118012180131801418015180161801718018180191802018021180221802318024180251802618027180281802918030180311803218033180341803518036180371803818039180401804118042180431804418045180461804718048180491805018051180521805318054180551805618057180581805918060180611806218063180641806518066180671806818069180701807118072180731807418075180761807718078180791808018081180821808318084180851808618087180881808918090180911809218093180941809518096180971809818099181001810118102181031810418105181061810718108181091811018111181121811318114181151811618117181181811918120181211812218123181241812518126181271812818129181301813118132181331813418135181361813718138181391814018141181421814318144181451814618147181481814918150181511815218153181541815518156181571815818159181601816118162181631816418165181661816718168181691817018171181721817318174181751817618177181781817918180181811818218183181841818518186181871818818189181901819118192181931819418195181961819718198181991820018201182021820318204182051820618207182081820918210182111821218213182141821518216182171821818219182201822118222182231822418225182261822718228182291823018231182321823318234182351823618237182381823918240182411824218243182441824518246182471824818249182501825118252182531825418255182561825718258182591826018261182621826318264182651826618267182681826918270182711827218273182741827518276182771827818279182801828118282182831828418285182861828718288182891829018291182921829318294182951829618297182981829918300183011830218303183041830518306183071830818309183101831118312183131831418315183161831718318183191832018321183221832318324183251832618327183281832918330183311833218333183341833518336183371833818339183401834118342183431834418345183461834718348183491835018351183521835318354183551835618357183581835918360183611836218363183641836518366183671836818369183701837118372183731837418375183761837718378183791838018381183821838318384183851838618387183881838918390183911839218393183941839518396183971839818399184001840118402184031840418405184061840718408184091841018411184121841318414184151841618417184181841918420184211842218423184241842518426184271842818429184301843118432184331843418435184361843718438184391844018441184421844318444184451844618447184481844918450184511845218453184541845518456184571845818459184601846118462184631846418465184661846718468184691847018471184721847318474184751847618477184781847918480184811848218483184841848518486184871848818489184901849118492184931849418495184961849718498184991850018501185021850318504185051850618507185081850918510185111851218513185141851518516185171851818519185201852118522185231852418525185261852718528185291853018531185321853318534185351853618537185381853918540185411854218543185441854518546185471854818549185501855118552185531855418555185561855718558185591856018561185621856318564185651856618567185681856918570185711857218573185741857518576185771857818579185801858118582185831858418585185861858718588185891859018591185921859318594185951859618597185981859918600186011860218603186041860518606186071860818609186101861118612186131861418615186161861718618186191862018621186221862318624186251862618627186281862918630186311863218633186341863518636186371863818639186401864118642186431864418645186461864718648186491865018651186521865318654186551865618657186581865918660186611866218663186641866518666186671866818669186701867118672186731867418675186761867718678186791868018681186821868318684186851868618687186881868918690186911869218693186941869518696186971869818699187001870118702187031870418705187061870718708187091871018711187121871318714187151871618717187181871918720187211872218723187241872518726187271872818729187301873118732187331873418735187361873718738187391874018741187421874318744187451874618747187481874918750187511875218753187541875518756187571875818759187601876118762187631876418765187661876718768187691877018771187721877318774187751877618777187781877918780187811878218783187841878518786187871878818789187901879118792187931879418795187961879718798187991880018801188021880318804188051880618807188081880918810188111881218813188141881518816188171881818819188201882118822188231882418825188261882718828188291883018831188321883318834188351883618837188381883918840188411884218843188441884518846188471884818849188501885118852188531885418855188561885718858188591886018861188621886318864188651886618867188681886918870188711887218873188741887518876188771887818879188801888118882188831888418885188861888718888188891889018891188921889318894188951889618897188981889918900189011890218903189041890518906189071890818909189101891118912189131891418915189161891718918189191892018921189221892318924189251892618927189281892918930189311893218933189341893518936189371893818939189401894118942189431894418945189461894718948189491895018951189521895318954189551895618957189581895918960189611896218963189641896518966189671896818969189701897118972189731897418975189761897718978189791898018981189821898318984189851898618987189881898918990189911899218993189941899518996189971899818999190001900119002190031900419005190061900719008190091901019011190121901319014190151901619017190181901919020190211902219023190241902519026190271902819029190301903119032190331903419035190361903719038190391904019041190421904319044190451904619047190481904919050190511905219053190541905519056190571905819059190601906119062190631906419065190661906719068190691907019071190721907319074190751907619077190781907919080190811908219083190841908519086190871908819089190901909119092190931909419095190961909719098190991910019101191021910319104191051910619107191081910919110191111911219113191141911519116191171911819119191201912119122191231912419125191261912719128191291913019131191321913319134191351913619137191381913919140191411914219143191441914519146191471914819149191501915119152191531915419155191561915719158191591916019161191621916319164191651916619167191681916919170191711917219173191741917519176191771917819179191801918119182191831918419185191861918719188191891919019191191921919319194191951919619197191981919919200192011920219203192041920519206192071920819209192101921119212192131921419215192161921719218192191922019221192221922319224192251922619227192281922919230192311923219233192341923519236192371923819239192401924119242192431924419245192461924719248192491925019251192521925319254192551925619257192581925919260192611926219263192641926519266192671926819269192701927119272192731927419275192761927719278192791928019281192821928319284192851928619287192881928919290192911929219293192941929519296192971929819299193001930119302193031930419305193061930719308193091931019311193121931319314193151931619317193181931919320193211932219323193241932519326193271932819329193301933119332193331933419335193361933719338193391934019341193421934319344193451934619347193481934919350193511935219353193541935519356193571935819359193601936119362193631936419365193661936719368193691937019371193721937319374193751937619377193781937919380193811938219383193841938519386193871938819389193901939119392193931939419395193961939719398193991940019401194021940319404194051940619407194081940919410194111941219413194141941519416194171941819419194201942119422194231942419425194261942719428194291943019431194321943319434194351943619437194381943919440194411944219443194441944519446194471944819449194501945119452194531945419455194561945719458194591946019461194621946319464194651946619467194681946919470194711947219473194741947519476194771947819479194801948119482194831948419485194861948719488194891949019491194921949319494194951949619497194981949919500195011950219503195041950519506195071950819509195101951119512195131951419515195161951719518195191952019521195221952319524195251952619527195281952919530195311953219533195341953519536195371953819539195401954119542195431954419545195461954719548195491955019551195521955319554195551955619557195581955919560195611956219563195641956519566195671956819569195701957119572195731957419575195761957719578195791958019581195821958319584195851958619587195881958919590195911959219593195941959519596195971959819599196001960119602196031960419605196061960719608196091961019611196121961319614196151961619617196181961919620196211962219623196241962519626196271962819629196301963119632196331963419635196361963719638196391964019641196421964319644196451964619647196481964919650196511965219653196541965519656196571965819659196601966119662196631966419665196661966719668196691967019671196721967319674196751967619677196781967919680196811968219683196841968519686196871968819689196901969119692196931969419695196961969719698196991970019701197021970319704197051970619707197081970919710197111971219713197141971519716197171971819719197201972119722197231972419725197261972719728197291973019731197321973319734197351973619737197381973919740197411974219743197441974519746197471974819749197501975119752197531975419755197561975719758197591976019761197621976319764197651976619767197681976919770197711977219773197741977519776197771977819779197801978119782197831978419785197861978719788197891979019791197921979319794197951979619797197981979919800198011980219803198041980519806198071980819809198101981119812198131981419815198161981719818198191982019821198221982319824198251982619827198281982919830198311983219833198341983519836198371983819839198401984119842198431984419845198461984719848198491985019851198521985319854198551985619857198581985919860198611986219863198641986519866198671986819869198701987119872198731987419875198761987719878198791988019881198821988319884198851988619887198881988919890198911989219893198941989519896198971989819899199001990119902199031990419905199061990719908199091991019911199121991319914199151991619917199181991919920199211992219923199241992519926199271992819929199301993119932199331993419935199361993719938199391994019941199421994319944199451994619947199481994919950199511995219953199541995519956199571995819959199601996119962199631996419965199661996719968199691997019971199721997319974199751997619977199781997919980199811998219983199841998519986199871998819989199901999119992199931999419995199961999719998199992000020001200022000320004200052000620007200082000920010200112001220013200142001520016200172001820019200202002120022200232002420025200262002720028200292003020031200322003320034200352003620037200382003920040200412004220043200442004520046200472004820049200502005120052200532005420055200562005720058200592006020061200622006320064200652006620067200682006920070200712007220073200742007520076200772007820079200802008120082200832008420085200862008720088200892009020091200922009320094200952009620097200982009920100201012010220103201042010520106201072010820109201102011120112201132011420115201162011720118201192012020121201222012320124201252012620127201282012920130201312013220133201342013520136201372013820139201402014120142201432014420145201462014720148201492015020151201522015320154201552015620157201582015920160201612016220163201642016520166201672016820169201702017120172201732017420175201762017720178201792018020181201822018320184201852018620187201882018920190201912019220193201942019520196201972019820199202002020120202202032020420205202062020720208202092021020211202122021320214202152021620217202182021920220202212022220223202242022520226202272022820229202302023120232202332023420235202362023720238202392024020241202422024320244202452024620247202482024920250202512025220253202542025520256202572025820259202602026120262202632026420265202662026720268202692027020271202722027320274202752027620277202782027920280202812028220283202842028520286202872028820289202902029120292202932029420295202962029720298202992030020301203022030320304203052030620307203082030920310203112031220313203142031520316203172031820319203202032120322203232032420325203262032720328203292033020331203322033320334203352033620337203382033920340203412034220343203442034520346203472034820349203502035120352203532035420355203562035720358203592036020361203622036320364203652036620367203682036920370203712037220373203742037520376203772037820379203802038120382203832038420385203862038720388203892039020391203922039320394203952039620397203982039920400204012040220403204042040520406204072040820409204102041120412204132041420415204162041720418204192042020421204222042320424204252042620427204282042920430204312043220433204342043520436204372043820439204402044120442204432044420445204462044720448204492045020451204522045320454204552045620457204582045920460204612046220463204642046520466204672046820469204702047120472204732047420475204762047720478204792048020481204822048320484204852048620487204882048920490204912049220493204942049520496204972049820499205002050120502205032050420505205062050720508205092051020511205122051320514205152051620517205182051920520205212052220523205242052520526205272052820529205302053120532205332053420535205362053720538205392054020541205422054320544205452054620547205482054920550205512055220553205542055520556205572055820559205602056120562205632056420565205662056720568205692057020571205722057320574205752057620577205782057920580205812058220583205842058520586205872058820589205902059120592205932059420595205962059720598205992060020601206022060320604206052060620607206082060920610206112061220613206142061520616206172061820619206202062120622206232062420625206262062720628206292063020631206322063320634206352063620637206382063920640206412064220643206442064520646206472064820649206502065120652206532065420655206562065720658206592066020661206622066320664206652066620667206682066920670206712067220673206742067520676206772067820679206802068120682206832068420685206862068720688206892069020691206922069320694206952069620697206982069920700207012070220703207042070520706207072070820709207102071120712207132071420715207162071720718207192072020721207222072320724207252072620727207282072920730207312073220733207342073520736207372073820739207402074120742207432074420745207462074720748207492075020751207522075320754207552075620757207582075920760207612076220763207642076520766207672076820769207702077120772207732077420775207762077720778207792078020781207822078320784207852078620787207882078920790207912079220793207942079520796207972079820799208002080120802208032080420805208062080720808208092081020811208122081320814208152081620817208182081920820208212082220823208242082520826208272082820829208302083120832208332083420835208362083720838208392084020841208422084320844208452084620847208482084920850208512085220853208542085520856208572085820859208602086120862208632086420865208662086720868208692087020871208722087320874208752087620877208782087920880208812088220883208842088520886208872088820889208902089120892208932089420895208962089720898208992090020901209022090320904209052090620907209082090920910209112091220913209142091520916209172091820919209202092120922209232092420925209262092720928209292093020931209322093320934209352093620937209382093920940209412094220943209442094520946209472094820949209502095120952209532095420955209562095720958209592096020961209622096320964209652096620967209682096920970209712097220973209742097520976209772097820979209802098120982209832098420985209862098720988209892099020991209922099320994209952099620997209982099921000210012100221003210042100521006210072100821009210102101121012210132101421015210162101721018210192102021021210222102321024210252102621027210282102921030210312103221033210342103521036210372103821039210402104121042210432104421045210462104721048210492105021051210522105321054210552105621057210582105921060210612106221063210642106521066210672106821069210702107121072210732107421075210762107721078210792108021081210822108321084210852108621087210882108921090210912109221093210942109521096210972109821099211002110121102211032110421105211062110721108211092111021111211122111321114211152111621117211182111921120211212112221123211242112521126211272112821129211302113121132211332113421135211362113721138211392114021141211422114321144211452114621147211482114921150211512115221153211542115521156211572115821159211602116121162211632116421165211662116721168211692117021171211722117321174211752117621177211782117921180211812118221183211842118521186211872118821189211902119121192211932119421195211962119721198211992120021201212022120321204212052120621207212082120921210212112121221213212142121521216212172121821219212202122121222212232122421225212262122721228212292123021231212322123321234212352123621237212382123921240212412124221243212442124521246212472124821249212502125121252212532125421255212562125721258212592126021261212622126321264212652126621267212682126921270212712127221273212742127521276212772127821279212802128121282212832128421285212862128721288212892129021291212922129321294212952129621297212982129921300213012130221303213042130521306213072130821309213102131121312213132131421315213162131721318213192132021321213222132321324213252132621327213282132921330213312133221333213342133521336213372133821339213402134121342213432134421345213462134721348213492135021351213522135321354213552135621357213582135921360213612136221363213642136521366213672136821369213702137121372213732137421375213762137721378213792138021381213822138321384213852138621387213882138921390213912139221393213942139521396213972139821399214002140121402214032140421405214062140721408214092141021411214122141321414214152141621417214182141921420214212142221423214242142521426214272142821429214302143121432214332143421435214362143721438214392144021441214422144321444214452144621447214482144921450214512145221453214542145521456214572145821459214602146121462214632146421465214662146721468214692147021471214722147321474214752147621477214782147921480214812148221483214842148521486214872148821489214902149121492214932149421495214962149721498214992150021501 |
- Changes in version 0.2.9.5-rc - 2016-1?-??
- Changes in version 0.2.8.9 - 2016-10-17
- Tor 0.2.8.9 backports a fix for a security hole in previous versions
- of Tor that would allow a remote attacker to crash a Tor client,
- hidden service, relay, or authority. All Tor users should upgrade to
- this version, or to 0.2.9.4-alpha. Patches will be released for older
- versions of Tor.
- o Major features (security fixes, also in 0.2.9.4-alpha):
- - Prevent a class of security bugs caused by treating the contents
- of a buffer chunk as if they were a NUL-terminated string. At
- least one such bug seems to be present in all currently used
- versions of Tor, and would allow an attacker to remotely crash
- most Tor instances, especially those compiled with extra compiler
- hardening. With this defense in place, such bugs can't crash Tor,
- though we should still fix them as they occur. Closes ticket
- 20384 (TROVE-2016-10-001).
- o Minor features (geoip):
- - Update geoip and geoip6 to the October 4 2016 Maxmind GeoLite2
- Country database.
- Changes in version 0.2.9.4-alpha - 2016-10-17
- Tor 0.2.9.4-alpha fixes a security hole in previous versions of Tor
- that would allow a remote attacker to crash a Tor client, hidden
- service, relay, or authority. All Tor users should upgrade to this
- version, or to 0.2.8.9. Patches will be released for older versions
- of Tor.
- Tor 0.2.9.4-alpha also adds numerous small features and fix-ups to
- previous versions of Tor, including the implementation of a feature to
- future- proof the Tor ecosystem against protocol changes, some bug
- fixes necessary for Tor Browser to use unix domain sockets correctly,
- and several portability improvements. We anticipate that this will be
- the last alpha in the Tor 0.2.9 series, and that the next release will
- be a release candidate.
- o Major features (security fixes):
- - Prevent a class of security bugs caused by treating the contents
- of a buffer chunk as if they were a NUL-terminated string. At
- least one such bug seems to be present in all currently used
- versions of Tor, and would allow an attacker to remotely crash
- most Tor instances, especially those compiled with extra compiler
- hardening. With this defense in place, such bugs can't crash Tor,
- though we should still fix them as they occur. Closes ticket
- 20384 (TROVE-2016-10-001).
- o Major features (subprotocol versions):
- - Tor directory authorities now vote on a set of recommended
- subprotocol versions, and on a set of required subprotocol
- versions. Clients and relays that lack support for a _required_
- subprotocol version will not start; those that lack support for a
- _recommended_ subprotocol version will warn the user to upgrade.
- Closes ticket 19958; implements part of proposal 264.
- - Tor now uses "subprotocol versions" to indicate compatibility.
- Previously, versions of Tor looked at the declared Tor version of
- a relay to tell whether they could use a given feature. Now, they
- should be able to rely on its declared subprotocol versions. This
- change allows compatible implementations of the Tor protocol(s) to
- exist without pretending to be 100% bug-compatible with particular
- releases of Tor itself. Closes ticket 19958; implements part of
- proposal 264.
- o Minor feature (fallback directories):
- - Remove broken fallbacks from the hard-coded fallback directory
- list. Closes ticket 20190; patch by teor.
- o Minor features (client, directory):
- - Since authorities now omit all routers that lack the Running and
- Valid flags, we assume that any relay listed in the consensus must
- have those flags. Closes ticket 20001; implements part of
- proposal 272.
- o Minor features (compilation, portability):
- - Compile correctly on MacOS 10.12 (aka "Sierra"). Closes
- ticket 20241.
- o Minor features (development tools, etags):
- - Teach the "make tags" Makefile target how to correctly find
- "MOCK_IMPL" function definitions. Patch from nherring; closes
- ticket 16869.
- o Minor features (geoip):
- - Update geoip and geoip6 to the October 4 2016 Maxmind GeoLite2
- Country database.
- o Minor features (unix domain sockets):
- - When configuring a unix domain socket for a SocksPort,
- ControlPort, or Hidden service, you can now wrap the address in
- quotes, using C-style escapes inside the quotes. This allows unix
- domain socket paths to contain spaces.
- o Minor features (virtual addresses):
- - Increase the maximum number of bits for the IPv6 virtual network
- prefix from 16 to 104. In this way, the condition for address
- allocation is less restrictive. Closes ticket 20151; feature
- on 0.2.4.7-alpha.
- o Minor bugfixes (address discovery):
- - Stop reordering IP addresses returned by the OS. This makes it
- more likely that Tor will guess the same relay IP address every
- time. Fixes issue 20163; bugfix on 0.2.7.1-alpha, ticket 17027.
- Reported by René Mayrhofer, patch by "cypherpunks".
- o Minor bugfixes (client, unix domain sockets):
- - Disable IsolateClientAddr when using AF_UNIX backed SocksPorts as
- the client address is meaningless. Fixes bug 20261; bugfix
- on 0.2.6.3-alpha.
- o Minor bugfixes (compilation, OpenBSD):
- - Detect Libevent2 functions correctly on systems that provide
- libevent2, but where libevent1 is linked with -levent. Fixes bug
- 19904; bugfix on 0.2.2.24-alpha. Patch from Rubiate.
- o Minor bugfixes (configuration):
- - When parsing quoted configuration values from the torrc file,
- handle windows line endings correctly. Fixes bug 19167; bugfix on
- 0.2.0.16-alpha. Patch from "Pingl".
- o Minor bugfixes (getpass):
- - Defensively fix a non-triggerable heap corruption at do_getpass()
- to protect ourselves from mistakes in the future. Fixes bug
- #19223; bugfix on 0.2.7.3-rc. Bug found by Guido Vranken, patch
- by nherring.
- o Minor bugfixes (hidden service):
- - Allow hidden services to run on IPv6 addresses even when the
- IPv6Exit option is not set. Fixes bug 18357; bugfix
- on 0.2.4.7-alpha.
- o Documentation:
- - Add module-level internal documentation for 36 C files that
- previously didn't have a high-level overview. Closes ticket #20385.
- o Required libraries:
- - When building with OpenSSL, Tor now requires version 1.0.1 or
- later. OpenSSL 1.0.0 and earlier are no longer supported by the
- OpenSSL team, and should not be used. Closes ticket 20303.
- Changes in version 0.2.9.3-alpha - 2016-09-23
- Tor 0.2.9.3-alpha adds improved support for entities that want to make
- high-performance services available through the Tor .onion mechanism
- without themselves receiving anonymity as they host those services. It
- also tries harder to ensure that all steps on a circuit are using the
- strongest crypto possible, strengthens some TLS properties, and
- resolves several bugs -- including a pair of crash bugs from the 0.2.8
- series. Anybody running an earlier version of 0.2.9.x should upgrade.
- o Major bugfixes (crash, also in 0.2.8.8):
- - Fix a complicated crash bug that could affect Tor clients
- configured to use bridges when replacing a networkstatus consensus
- in which one of their bridges was mentioned. OpenBSD users saw
- more crashes here, but all platforms were potentially affected.
- Fixes bug 20103; bugfix on 0.2.8.2-alpha.
- o Major bugfixes (relay, OOM handler, also in 0.2.8.8):
- - Fix a timing-dependent assertion failure that could occur when we
- tried to flush from a circuit after having freed its cells because
- of an out-of-memory condition. Fixes bug 20203; bugfix on
- 0.2.8.1-alpha. Thanks to "cypherpunks" for help diagnosing
- this one.
- o Major features (circuit building, security):
- - Authorities, relays and clients now require ntor keys in all
- descriptors, for all hops (except for rare hidden service protocol
- cases), for all circuits, and for all other roles. Part of
- ticket 19163.
- - Tor authorities, relays, and clients only use ntor, except for
- rare cases in the hidden service protocol. Part of ticket 19163.
- o Major features (single-hop "hidden" services):
- - Add experimental HiddenServiceSingleHopMode and
- HiddenServiceNonAnonymousMode options. When both are set to 1,
- every hidden service on a Tor instance becomes a non-anonymous
- Single Onion Service. Single Onions make one-hop (direct)
- connections to their introduction and renzedvous points. One-hop
- circuits make Single Onion servers easily locatable, but clients
- remain location-anonymous. This is compatible with the existing
- hidden service implementation, and works on the current tor
- network without any changes to older relays or clients. Implements
- proposal 260, completes ticket 17178. Patch by teor and asn.
- o Major features (resource management):
- - Tor can now notice it is about to run out of sockets, and
- preemptively close connections of lower priority. (This feature is
- off by default for now, since the current prioritizing method is
- yet not mature enough. You can enable it by setting
- "DisableOOSCheck 0", but watch out: it might close some sockets
- you would rather have it keep.) Closes ticket 18640.
- o Major bugfixes (circuit building):
- - Hidden service client-to-intro-point and service-to-rendezvous-
- point cicruits use the TAP key supplied by the protocol, to avoid
- epistemic attacks. Fixes bug 19163; bugfix on 0.2.4.18-rc.
- o Major bugfixes (compilation, OpenBSD):
- - Fix a Libevent-detection bug in our autoconf script that would
- prevent Tor from linking successfully on OpenBSD. Patch from
- rubiate. Fixes bug 19902; bugfix on 0.2.9.1-alpha.
- o Major bugfixes (hidden services):
- - Clients now require hidden services to include the TAP keys for
- their intro points in the hidden service descriptor. This prevents
- an inadvertent upgrade to ntor, which a malicious hidden service
- could use to distinguish clients by consensus version. Fixes bug
- 20012; bugfix on 0.2.4.8-alpha. Patch by teor.
- o Minor features (security, TLS):
- - Servers no longer support clients that without AES ciphersuites.
- (3DES is no longer considered an acceptable cipher.) We believe
- that no such Tor clients currently exist, since Tor has required
- OpenSSL 0.9.7 or later since 2009. Closes ticket 19998.
- o Minor feature (fallback directories):
- - Remove broken entries from the hard-coded fallback directory list.
- Closes ticket 20190; patch by teor.
- o Minor features (geoip, also in 0.2.8.8):
- - Update geoip and geoip6 to the September 6 2016 Maxmind GeoLite2
- Country database.
- o Minor feature (port flags):
- - Add new flags to the *Port options to finer control over which
- requests are allowed. The flags are NoDNSRequest, NoOnionTraffic,
- and the synthetic flag OnionTrafficOnly, which is equivalent to
- NoDNSRequest, NoIPv4Traffic, and NoIPv6Traffic. Closes enhancement
- 18693; patch by "teor".
- o Minor features (directory authority):
- - After voting, if the authorities decide that a relay is not
- "Valid", they no longer include it in the consensus at all. Closes
- ticket 20002; implements part of proposal 272.
- o Minor features (testing):
- - Disable memory protections on OpenBSD when performing our unit
- tests for memwipe(). The test deliberately invokes undefined
- behavior, and the OpenBSD protections interfere with this. Patch
- from "rubiate". Closes ticket 20066.
- o Minor features (testing, ipv6):
- - Add the single-onion and single-onion-ipv6 chutney targets to
- "make test-network-all". This requires a recent chutney version
- with the single onion network flavours (git c72a652 or later).
- Closes ticket 20072; patch by teor.
- - Add the hs-ipv6 chutney target to make test-network-all's IPv6
- tests. Remove bridges+hs, as it's somewhat redundant. This
- requires a recent chutney version that supports IPv6 clients,
- relays, and authorities. Closes ticket 20069; patch by teor.
- o Minor features (Tor2web):
- - Make Tor2web clients respect ReachableAddresses. This feature was
- inadvertently enabled in 0.2.8.6, then removed by bugfix 19973 on
- 0.2.8.7. Implements feature 20034. Patch by teor.
- o Minor features (unit tests):
- - We've done significant work to make the unit tests run faster.
- - Our link-handshake unit tests now check that when invalid
- handshakes fail, they fail with the error messages we expected.
- - Our unit testing code that captures log messages no longer
- prevents them from being written out if the user asked for them
- (by passing --debug or --info or or --notice --warn to the "test"
- binary). This change prevents us from missing unexpected log
- messages simply because we were looking for others. Related to
- ticket 19999.
- - The unit tests now log all warning messages with the "BUG" flag.
- Previously, they only logged errors by default. This change will
- help us make our testing code more correct, and make sure that we
- only hit this code when we mean to. In the meantime, however,
- there will be more warnings in the unit test logs than before.
- This is preparatory work for ticket 19999.
- - The unit tests now treat any failure of a "tor_assert_nonfatal()"
- assertion as a test failure.
- o Minor bug fixes (circuits):
- - Use the CircuitBuildTimeout option whenever
- LearnCircuitBuildTimeout is disabled. Previously, we would respect
- the option when a user disabled it, but not when it was disabled
- because some other option was set. Fixes bug 20073; bugfix on
- 0.2.4.12-alpha. Patch by teor.
- o Minor bugfixes (allocation):
- - Change how we allocate memory for large chunks on buffers, to
- avoid a (currently impossible) integer overflow, and to waste less
- space when allocating unusually large chunks. Fixes bug 20081;
- bugfix on 0.2.0.16-alpha. Issue identified by Guido Vranken.
- - Always include orconfig.h before including any other C headers.
- Sometimes, it includes macros that affect the behavior of the
- standard headers. Fixes bug 19767; bugfix on 0.2.9.1-alpha (the
- first version to use AC_USE_SYSTEM_EXTENSIONS).
- - Fix a syntax error in the IF_BUG_ONCE__() macro in non-GCC-
- compatible compilers. Fixes bug 20141; bugfix on 0.2.9.1-alpha.
- Patch from Gisle Vanem.
- - Stop trying to build with Clang 4.0's -Wthread-safety warnings.
- They apparently require a set of annotations that we aren't
- currently using, and they create false positives in our pthreads
- wrappers. Fixes bug 20110; bugfix on 0.2.9.1-alpha.
- o Minor bugfixes (directory authority):
- - Die with a more useful error when the operator forgets to place
- the authority_signing_key file into the keys directory. This
- avoids an uninformative assert & traceback about having an invalid
- key. Fixes bug 20065; bugfix on 0.2.0.1-alpha.
- - When allowing private addresses, mark Exits that only exit to
- private locations as such. Fixes bug 20064; bugfix
- on 0.2.2.9-alpha.
- o Minor bugfixes (documentation):
- - Document the default PathsNeededToBuildCircuits value that's used
- by clients when the directory authorities don't set
- min_paths_for_circs_pct. Fixes bug 20117; bugfix on 02c320916e02
- in tor-0.2.4.10-alpha. Patch by teor, reported by Jesse V.
- - Fix manual for the User option: it takes a username, not a UID.
- Fixes bug 19122; bugfix on 0.0.2pre16 (the first version to have
- a manpage!).
- o Minor bugfixes (hidden services):
- - Stop logging intro point details to the client log on certain
- error conditions. Fixed as part of bug 20012; bugfix on
- 0.2.4.8-alpha. Patch by teor.
- o Minor bugfixes (IPv6, testing):
- - Check for IPv6 correctly on Linux when running test networks.
- Fixes bug 19905; bugfix on 0.2.7.3-rc; patch by teor.
- o Minor bugfixes (Linux seccomp2 sandbox):
- - Add permission to run the sched_yield() and sigaltstack() system
- calls, in order to support versions of Tor compiled with asan or
- ubsan code that use these calls. Now "sandbox 1" and
- "--enable-expensive-hardening" should be compatible on more
- systems. Fixes bug 20063; bugfix on 0.2.5.1-alpha.
- o Minor bugfixes (logging):
- - When logging a message from the BUG() macro, be explicit about
- what we were asserting. Previously we were confusing what we were
- asserting with what the bug was. Fixes bug 20093; bugfix
- on 0.2.9.1-alpha.
- - When we are unable to remove the bw_accounting file, do not warn
- if the reason we couldn't remove it was that it didn't exist.
- Fixes bug 19964; bugfix on 0.2.5.4-alpha. Patch from 'pastly'.
- o Minor bugfixes (option parsing):
- - Count unix sockets when counting client listeners (SOCKS, Trans,
- NATD, and DNS). This has no user-visible behaviour changes: these
- options are set once, and never read. Required for correct
- behaviour in ticket 17178. Fixes bug 19677; bugfix on
- 0.2.6.3-alpha. Patch by teor.
- o Minor bugfixes (options):
- - Check the consistency of UseEntryGuards and EntryNodes more
- reliably. Fixes bug 20074; bugfix on tor- 0.2.4.12-alpha. Patch
- by teor.
- - Stop changing the configured value of UseEntryGuards on
- authorities and Tor2web clients. Fixes bug 20074; bugfix on
- commits 51fc6799 in tor-0.1.1.16-rc and acda1735 in tor-0.2.4.3-
- alpha. Patch by teor.
- o Minor bugfixes (Tor2web):
- - Prevent Tor2web clients running hidden services, these services
- are not anonymous due to the one-hop client paths. Fixes bug
- 19678. Patch by teor.
- o Minor bugfixes (unit tests):
- - Fix a shared-random unit test that was failing on big endian
- architectures due to internal representation of a integer copied
- to a buffer. The test is changed to take a full 32 bytes of data
- and use the output of a python script that make the COMMIT and
- REVEAL calculation according to the spec. Fixes bug 19977; bugfix
- on 0.2.9.1-alpha.
- - The tor_tls_server_info_callback unit test no longer crashes when
- debug-level logging is turned on. Fixes bug 20041; bugfix
- on 0.2.8.1-alpha.
- Changes in version 0.2.8.8 - 2016-09-23
- Tor 0.2.8.8 fixes two crash bugs present in previous versions of the
- 0.2.8.x series. Relays running 0.2.8.x should upgrade, as should users
- who select public relays as their bridges.
- o Major bugfixes (crash):
- - Fix a complicated crash bug that could affect Tor clients
- configured to use bridges when replacing a networkstatus consensus
- in which one of their bridges was mentioned. OpenBSD users saw
- more crashes here, but all platforms were potentially affected.
- Fixes bug 20103; bugfix on 0.2.8.2-alpha.
- o Major bugfixes (relay, OOM handler):
- - Fix a timing-dependent assertion failure that could occur when we
- tried to flush from a circuit after having freed its cells because
- of an out-of-memory condition. Fixes bug 20203; bugfix on
- 0.2.8.1-alpha. Thanks to "cypherpunks" for help diagnosing
- this one.
- o Minor feature (fallback directories):
- - Remove broken fallbacks from the hard-coded fallback directory
- list. Closes ticket 20190; patch by teor.
- o Minor features (geoip):
- - Update geoip and geoip6 to the September 6 2016 Maxmind GeoLite2
- Country database.
- Changes in version 0.2.9.2-alpha - 2016-08-24
- Tor 0.2.9.2-alpha continues development of the 0.2.9 series with
- several new features and bugfixes. It also includes an important
- authority update and an important bugfix from 0.2.8.7. Everyone who
- sets the ReachableAddresses option, and all bridges, are strongly
- encouraged to upgrade to 0.2.8.7, or to 0.2.9.2-alpha.
- o Directory authority changes (also in 0.2.8.7):
- - The "Tonga" bridge authority has been retired; the new bridge
- authority is "Bifroest". Closes tickets 19728 and 19690.
- o Major bugfixes (client, security, also in 0.2.8.7):
- - Only use the ReachableAddresses option to restrict the first hop
- in a path. In earlier versions of 0.2.8.x, it would apply to
- every hop in the path, with a possible degradation in anonymity
- for anyone using an uncommon ReachableAddress setting. Fixes bug
- 19973; bugfix on 0.2.8.2-alpha.
- o Major features (user interface):
- - Tor now supports the ability to declare options deprecated, so
- that we can recommend that people stop using them. Previously,
- this was done in an ad-hoc way. Closes ticket 19820.
- o Major bugfixes (directory downloads):
- - Avoid resetting download status for consensuses hourly, since we
- already have another, smarter retry mechanism. Fixes bug 8625;
- bugfix on 0.2.0.9-alpha.
- o Minor features (config):
- - Warn users when descriptor and port addresses are inconsistent.
- Mitigates bug 13953; patch by teor.
- o Minor features (geoip):
- - Update geoip and geoip6 to the August 2 2016 Maxmind GeoLite2
- Country database.
- o Minor features (user interface):
- - There is a new --list-deprecated-options command-line option to
- list all of the deprecated options. Implemented as part of
- ticket 19820.
- o Minor bugfixes (code style):
- - Fix an integer signedness conversion issue in the case conversion
- tables. Fixes bug 19168; bugfix on 0.2.1.11-alpha.
- o Minor bugfixes (compilation):
- - Build correctly on versions of libevent2 without support for
- evutil_secure_rng_add_bytes(). Fixes bug 19904; bugfix
- on 0.2.5.4-alpha.
- - Fix a compilation warning on GCC versions before 4.6. Our
- ENABLE_GCC_WARNING macro used the word "warning" as an argument,
- when it is also required as an argument to the compiler pragma.
- Fixes bug 19901; bugfix on 0.2.9.1-alpha.
- o Minor bugfixes (compilation, also in 0.2.8.7):
- - Remove an inappropriate "inline" in tortls.c that was causing
- warnings on older versions of GCC. Fixes bug 19903; bugfix
- on 0.2.8.1-alpha.
- o Minor bugfixes (fallback directories, also in 0.2.8.7):
- - Avoid logging a NULL string pointer when loading fallback
- directory information. Fixes bug 19947; bugfix on 0.2.4.7-alpha
- and 0.2.8.1-alpha. Report and patch by "rubiate".
- o Minor bugfixes (logging):
- - Log a more accurate message when we fail to dump a microdescriptor.
- Fixes bug 17758; bugfix on 0.2.2.8-alpha. Patch from Daniel Pinto.
- o Minor bugfixes (memory leak):
- - Fix a series of slow memory leaks related to parsing torrc files
- and options. Fixes bug 19466; bugfix on 0.2.1.6-alpha.
- o Deprecated features:
- - A number of DNS-cache-related sub-options for client ports are now
- deprecated for security reasons, and may be removed in a future
- version of Tor. (We believe that client-side DNS cacheing is a bad
- idea for anonymity, and you should not turn it on.) The options
- are: CacheDNS, CacheIPv4DNS, CacheIPv6DNS, UseDNSCache,
- UseIPv4Cache, and UseIPv6Cache.
- - A number of options are deprecated for security reasons, and may
- be removed in a future version of Tor. The options are:
- AllowDotExit, AllowInvalidNodes, AllowSingleHopCircuits,
- AllowSingleHopExits, ClientDNSRejectInternalAddresses,
- CloseHSClientCircuitsImmediatelyOnTimeout,
- CloseHSServiceRendCircuitsImmediatelyOnTimeout,
- ExcludeSingleHopRelays, FastFirstHopPK, TLSECGroup,
- UseNTorHandshake, and WarnUnsafeSocks.
- - The *ListenAddress options are now deprecated as unnecessary: the
- corresponding *Port options should be used instead. These options
- may someday be removed. The affected options are:
- ControlListenAddress, DNSListenAddress, DirListenAddress,
- NATDListenAddress, ORListenAddress, SocksListenAddress,
- and TransListenAddress.
- o Documentation:
- - Correct the IPv6 syntax in our documentation for the
- VirtualAddrNetworkIPv6 torrc option. Closes ticket 19743.
- o Removed code:
- - We no longer include the (dead, deprecated) bufferevent code in
- Tor. Closes ticket 19450. Based on a patch from U+039b.
- Changes in version 0.2.8.7 - 2016-08-24
- Tor 0.2.8.7 fixes an important bug related to the ReachableAddresses
- option in 0.2.8.6, and replaces a retiring bridge authority. Everyone
- who sets the ReachableAddresses option, and all bridges, are strongly
- encouraged to upgrade.
- o Directory authority changes:
- - The "Tonga" bridge authority has been retired; the new bridge
- authority is "Bifroest". Closes tickets 19728 and 19690.
- o Major bugfixes (client, security):
- - Only use the ReachableAddresses option to restrict the first hop
- in a path. In earlier versions of 0.2.8.x, it would apply to
- every hop in the path, with a possible degradation in anonymity
- for anyone using an uncommon ReachableAddress setting. Fixes bug
- 19973; bugfix on 0.2.8.2-alpha.
- o Minor features (geoip):
- - Update geoip and geoip6 to the August 2 2016 Maxmind GeoLite2
- Country database.
- o Minor bugfixes (compilation):
- - Remove an inappropriate "inline" in tortls.c that was causing
- warnings on older versions of GCC. Fixes bug 19903; bugfix
- on 0.2.8.1-alpha.
- o Minor bugfixes (fallback directories):
- - Avoid logging a NULL string pointer when loading fallback
- directory information. Fixes bug 19947; bugfix on 0.2.4.7-alpha
- and 0.2.8.1-alpha. Report and patch by "rubiate".
- Changes in version 0.2.9.1-alpha - 2016-08-08
- Tor 0.2.9.1-alpha is the first alpha release in the 0.2.9 development
- series. It improves our support for hardened builds and compiler
- warnings, deploys some critical infrastructure for improvements to
- hidden services, includes a new timing backend that we hope to use for
- better support for traffic padding, makes it easier for programmers to
- log unexpected events, and contains other small improvements to
- security, correctness, and performance.
- Below are the changes since 0.2.8.6.
- o New system requirements:
- - Tor now requires Libevent version 2.0.10-stable or later. Older
- versions of Libevent have less efficient backends for several
- platforms, and lack the DNS code that we use for our server-side
- DNS support. This implements ticket 19554.
- - Tor now requires zlib version 1.2 or later, for security,
- efficiency, and (eventually) gzip support. (Back when we started,
- zlib 1.1 and zlib 1.0 were still found in the wild. 1.2 was
- released in 2003. We recommend the latest version.)
- o Major features (build, hardening):
- - Tor now builds with -ftrapv by default on compilers that support
- it. This option detects signed integer overflow (which C forbids),
- and turns it into a hard-failure. We do not apply this option to
- code that needs to run in constant time to avoid side-channels;
- instead, we use -fwrapv in that code. Closes ticket 17983.
- - When --enable-expensive-hardening is selected, stop applying the
- clang/gcc sanitizers to code that needs to run in constant time.
- Although we are aware of no introduced side-channels, we are not
- able to prove that there are none. Related to ticket 17983.
- o Major features (compilation):
- - Our big list of extra GCC warnings is now enabled by default when
- building with GCC (or with anything like Clang that claims to be
- GCC-compatible). To make all warnings into fatal compilation
- errors, pass --enable-fatal-warnings to configure. Closes
- ticket 19044.
- - Use the Autoconf macro AC_USE_SYSTEM_EXTENSIONS to automatically
- turn on C and POSIX extensions. (Previously, we attempted to do
- this on an ad hoc basis.) Closes ticket 19139.
- o Major features (directory authorities, hidden services):
- - Directory authorities can now perform the shared randomness
- protocol specified by proposal 250. Using this protocol, directory
- authorities generate a global fresh random value every day. In the
- future, this value will be used by hidden services to select
- HSDirs. This release implements the directory authority feature;
- the hidden service side will be implemented in the future as part
- of proposal 224. Resolves ticket 16943; implements proposal 250.
- o Major features (downloading, random exponential backoff):
- - When we fail to download an object from a directory service, wait
- for an (exponentially increasing) randomized amount of time before
- retrying, rather than a fixed interval as we did before. This
- prevents a group of Tor instances from becoming too synchronized,
- or a single Tor instance from becoming too predictable, in its
- download schedule. Closes ticket 15942.
- o Major bugfixes (exit policies):
- - Avoid disclosing exit outbound bind addresses, configured port
- bind addresses, and local interface addresses in relay descriptors
- by default under ExitPolicyRejectPrivate. Instead, only reject
- these (otherwise unlisted) addresses if
- ExitPolicyRejectLocalInterfaces is set. Fixes bug 18456; bugfix on
- 0.2.7.2-alpha. Patch by teor.
- o Major bugfixes (hidden service client):
- - Allow Tor clients with appropriate controllers to work with
- FetchHidServDescriptors set to 0. Previously, this option also
- disabled descriptor cache lookup, thus breaking hidden services
- entirely. Fixes bug 18704; bugfix on 0.2.0.20-rc. Patch by "twim".
- o Minor features (build, hardening):
- - Detect and work around a libclang_rt problem that would prevent
- clang from finding __mulodi4() on some 32-bit platforms, and thus
- keep -ftrapv from linking on those systems. Closes ticket 19079.
- - When building on a system without runtime support for the runtime
- hardening options, try to log a useful warning at configuration
- time, rather than an incomprehensible warning at link time. If
- expensive hardening was requested, this warning becomes an error.
- Closes ticket 18895.
- o Minor features (code safety):
- - In our integer-parsing functions, ensure that maxiumum value we
- give is no smaller than the minimum value. Closes ticket 19063;
- patch from U+039b.
- o Minor features (controller):
- - Implement new GETINFO queries for all downloads that use
- download_status_t to schedule retries. This allows controllers to
- examine the schedule for pending downloads. Closes ticket 19323.
- - Allow controllers to configure basic client authorization on
- hidden services when they create them with the ADD_ONION control
- command. Implements ticket 15588. Patch by "special".
- - Fire a STATUS_SERVER controller event whenever the hibernation
- status changes between "awake"/"soft"/"hard". Closes ticket 18685.
- o Minor features (directory authority):
- - Directory authorities now only give the Guard flag to a relay if
- they are also giving it the Stable flag. This change allows us to
- simplify path selection for clients. It should have minimal effect
- in practice, since >99% of Guards already have the Stable flag.
- Implements ticket 18624.
- - Directory authorities now write their v3-status-votes file out to
- disk earlier in the consensus process, so we have a record of the
- votes even if we abort the consensus process. Resolves
- ticket 19036.
- o Minor features (hidden service):
- - Stop being so strict about the payload length of "rendezvous1"
- cells. We used to be locked in to the "TAP" handshake length, and
- now we can handle better handshakes like "ntor". Resolves
- ticket 18998.
- o Minor features (infrastructure, time):
- - Tor now uses the operating system's monotonic timers (where
- available) for internal fine-grained timing. Previously we would
- look at the system clock, and then attempt to compensate for the
- clock running backwards. Closes ticket 18908.
- - Tor now includes an improved timer backend, so that we can
- efficiently support tens or hundreds of thousands of concurrent
- timers, as will be needed for some of our planned anti-traffic-
- analysis work. This code is based on William Ahern's "timeout.c"
- project, which implements a "tickless hierarchical timing wheel".
- Closes ticket 18365.
- o Minor features (logging):
- - Provide a more useful warning message when configured with an
- invalid Nickname. Closes ticket 18300; patch from "icanhasaccount".
- - When dumping unparseable router descriptors, optionally store them
- in separate files, named by digest, up to a configurable size
- limit. You can change the size limit by setting the
- MaxUnparseableDescSizeToLog option, and disable this feature by
- setting that option to 0. Closes ticket 18322.
- - Add a set of macros to check nonfatal assertions, for internal
- use. Migrating more of our checks to these should help us avoid
- needless crash bugs. Closes ticket 18613.
- o Minor features (performance):
- - Changer the "optimistic data" extension from "off by default" to
- "on by default". The default was ordinarily overridden by a
- consensus option, but when clients were bootstrapping for the
- first time, they would not have a consensus to get the option
- from. Changing this default When fetching a consensus for the
- first time, use optimistic data. This saves a round-trip during
- startup. Closes ticket 18815.
- o Minor features (relay, usability):
- - When the directory authorities refuse a bad relay's descriptor,
- encourage the relay operator to contact us. Many relay operators
- won't notice this line in their logs, but it's a win if even a few
- learn why we don't like what their relay was doing. Resolves
- ticket 18760.
- o Minor features (testing):
- - Let backtrace tests work correctly under AddressSanitizer. Fixes
- part of bug 18934; bugfix on 0.2.5.2-alpha.
- - Move the test-network.sh script to chutney, and modify tor's test-
- network.sh to call the (newer) chutney version when available.
- Resolves ticket 19116. Patch by teor.
- - Use the lcov convention for marking lines as unreachable, so that
- we don't count them when we're generating test coverage data.
- Update our coverage tools to understand this convention. Closes
- ticket 16792.
- o Minor bugfixes (bootstrap):
- - Remember the directory we fetched the consensus or previous
- certificates from, and use it to fetch future authority
- certificates. This change improves bootstrapping performance.
- Fixes bug 18963; bugfix on 0.2.8.1-alpha.
- o Minor bugfixes (build):
- - The test-stem and test-network makefile targets now depend only on
- the tor binary that they are testing. Previously, they depended on
- "make all". Fixes bug 18240; bugfix on 0.2.8.2-alpha. Based on a
- patch from "cypherpunks".
- o Minor bugfixes (circuits):
- - Make sure extend_info_from_router() is only called on servers.
- Fixes bug 19639; bugfix on 0.2.8.1-alpha.
- o Minor bugfixes (compilation):
- - When building with Clang, use a full set of GCC warnings.
- (Previously, we included only a subset, because of the way we
- detected them.) Fixes bug 19216; bugfix on 0.2.0.1-alpha.
- o Minor bugfixes (directory authority):
- - Authorities now sort the "package" lines in their votes, for ease
- of debugging. (They are already sorted in consensus documents.)
- Fixes bug 18840; bugfix on 0.2.6.3-alpha.
- - When parsing a detached signature, make sure we use the length of
- the digest algorithm instead of an hardcoded DIGEST256_LEN in
- order to avoid comparing bytes out-of-bounds with a smaller digest
- length such as SHA1. Fixes bug 19066; bugfix on 0.2.2.6-alpha.
- o Minor bugfixes (documentation):
- - Document the --passphrase-fd option in the tor manpage. Fixes bug
- 19504; bugfix on 0.2.7.3-rc.
- - Fix the description of the --passphrase-fd option in the
- tor-gencert manpage. The option is used to pass the number of a
- file descriptor to read the passphrase from, not to read the file
- descriptor from. Fixes bug 19505; bugfix on 0.2.0.20-alpha.
- o Minor bugfixes (ephemeral hidden service):
- - When deleting an ephemeral hidden service, close its intro points
- even if they are not completely open. Fixes bug 18604; bugfix
- on 0.2.7.1-alpha.
- o Minor bugfixes (guard selection):
- - Use a single entry guard even if the NumEntryGuards consensus
- parameter is not provided. Fixes bug 17688; bugfix
- on 0.2.5.6-alpha.
- - Don't mark guards as unreachable if connection_connect() fails.
- That function fails for local reasons, so it shouldn't reveal
- anything about the status of the guard. Fixes bug 14334; bugfix
- on 0.2.3.10-alpha.
- o Minor bugfixes (hidden service client):
- - Increase the minimum number of internal circuits we preemptively
- build from 2 to 3, so a circuit is available when a client
- connects to another onion service. Fixes bug 13239; bugfix
- on 0.1.0.1-rc.
- o Minor bugfixes (logging):
- - When logging a directory ownership mismatch, log the owning
- username correctly. Fixes bug 19578; bugfix on 0.2.2.29-beta.
- o Minor bugfixes (memory leaks):
- - Fix a small, uncommon memory leak that could occur when reading a
- truncated ed25519 key file. Fixes bug 18956; bugfix
- on 0.2.6.1-alpha.
- o Minor bugfixes (testing):
- - Allow clients to retry HSDirs much faster in test networks. Fixes
- bug 19702; bugfix on 0.2.7.1-alpha. Patch by teor.
- - Disable ASAN's detection of segmentation faults while running
- test_bt.sh, so that we can make sure that our own backtrace
- generation code works. Fixes another aspect of bug 18934; bugfix
- on 0.2.5.2-alpha. Patch from "cypherpunks".
- - Fix the test-network-all target on out-of-tree builds by using the
- correct path to the test driver script. Fixes bug 19421; bugfix
- on 0.2.7.3-rc.
- o Minor bugfixes (time):
- - Improve overflow checks in tv_udiff and tv_mdiff. Fixes bug 19483;
- bugfix on all released tor versions.
- - When computing the difference between two times in milliseconds,
- we now round to the nearest millisecond correctly. Previously, we
- could sometimes round in the wrong direction. Fixes bug 19428;
- bugfix on 0.2.2.2-alpha.
- o Minor bugfixes (user interface):
- - Display a more accurate number of suppressed messages in the log
- rate-limiter. Previously, there was a potential integer overflow
- in the counter. Now, if the number of messages hits a maximum, the
- rate-limiter doesn't count any further. Fixes bug 19435; bugfix
- on 0.2.4.11-alpha.
- - Fix a typo in the passphrase prompt for the ed25519 identity key.
- Fixes bug 19503; bugfix on 0.2.7.2-alpha.
- o Code simplification and refactoring:
- - Remove redundant declarations of the MIN macro. Closes
- ticket 18889.
- - Rename tor_dup_addr() to tor_addr_to_str_dup() to avoid confusion.
- Closes ticket 18462; patch from "icanhasaccount".
- - Split the 600-line directory_handle_command_get function into
- separate functions for different URL types. Closes ticket 16698.
- o Documentation:
- - Fix spelling of "--enable-tor2web-mode" in the manpage. Closes
- ticket 19153. Patch from "U+039b".
- o Removed features:
- - Remove support for "GET /tor/bytes.txt" DirPort request, and
- "GETINFO dir-usage" controller request, which were only available
- via a compile-time option in Tor anyway. Feature was added in
- 0.2.2.1-alpha. Resolves ticket 19035.
- - There is no longer a compile-time option to disable support for
- TransPort. (If you don't want TransPort; just don't use it.) Patch
- from "U+039b". Closes ticket 19449.
- o Testing:
- - Run more workqueue tests as part of "make check". These had
- previously been implemented, but you needed to know special
- command-line options to enable them.
- - We now have unit tests for our code to reject zlib "compression
- bombs". (Fortunately, the code works fine.)
- Changes in version 0.2.8.6 - 2016-08-02
- Tor 0.2.8.6 is the first stable version of the Tor 0.2.8 series.
- The Tor 0.2.8 series improves client bootstrapping performance,
- completes the authority-side implementation of improved identity
- keys for relays, and includes numerous bugfixes and performance
- improvements throughout the program. This release continues to
- improve the coverage of Tor's test suite. For a full list of
- changes since Tor 0.2.7, see the ReleaseNotes file.
- Changes since 0.2.8.5-rc:
- o Minor features (geoip):
- - Update geoip and geoip6 to the July 6 2016 Maxmind GeoLite2
- Country database.
- o Minor bugfixes (compilation):
- - Fix a compilation warning in the unit tests on systems where char
- is signed. Fixes bug 19682; bugfix on 0.2.8.1-alpha.
- o Minor bugfixes (fallback directories):
- - Remove a fallback that was on the hardcoded list, then opted-out.
- Fixes bug 19782; update to fallback list from 0.2.8.2-alpha.
- o Minor bugfixes (Linux seccomp2 sandbox):
- - Allow more syscalls when running with "Sandbox 1" enabled:
- sysinfo, getsockopt(SO_SNDBUF), and setsockopt(SO_SNDBUFFORCE). On
- some systems, these are required for Tor to start. Fixes bug
- 18397; bugfix on 0.2.5.1-alpha. Patch from Daniel Pinto.
- - Allow IPPROTO_UDP datagram sockets when running with "Sandbox 1",
- so that get_interface_address6_via_udp_socket_hack() can work.
- Fixes bug 19660; bugfix on 0.2.5.1-alpha.
- Changes in version 0.2.8.5-rc - 2016-07-07
- Tor 0.2.8.5-rc is the second release candidate in the Tor 0.2.8
- series. If we find no new bugs or regressions here, the first stable
- 0.2.8 release will be identical to it. It has a few small bugfixes
- against previous versions.
- o Directory authority changes:
- - Urras is no longer a directory authority. Closes ticket 19271.
- o Major bugfixes (heartbeat):
- - Fix a regression that would crash Tor when the periodic
- "heartbeat" log messages were disabled. Fixes bug 19454; bugfix on
- tor-0.2.8.1-alpha. Reported by "kubaku".
- o Minor features (build):
- - Tor now again builds with the recent OpenSSL 1.1 development
- branch (tested against 1.1.0-pre6-dev). Closes ticket 19499.
- - When building manual pages, set the timezone to "UTC", so that the
- output is reproducible. Fixes bug 19558; bugfix on 0.2.2.9-alpha.
- Patch from intrigeri.
- o Minor bugfixes (fallback directory selection):
- - Avoid errors during fallback selection if there are no eligible
- fallbacks. Fixes bug 19480; bugfix on 0.2.8.3-alpha. Patch
- by teor.
- o Minor bugfixes (IPv6, microdescriptors):
- - Don't check node addresses when we only have a routerstatus. This
- allows IPv6-only clients to bootstrap by fetching microdescriptors
- from fallback directory mirrors. (The microdescriptor consensus
- has no IPv6 addresses in it.) Fixes bug 19608; bugfix
- on 0.2.8.2-alpha.
- o Minor bugfixes (logging):
- - Reduce pointlessly verbose log messages when directory servers
- can't be found. Fixes bug 18849; bugfix on 0.2.8.3-alpha and
- 0.2.8.1-alpha. Patch by teor.
- - When a fallback directory changes its fingerprint from the hard-
- coded fingerprint, log a less severe, more explanatory log
- message. Fixes bug 18812; bugfix on 0.2.8.1-alpha. Patch by teor.
- o Minor bugfixes (Linux seccomp2 sandboxing):
- - Allow statistics to be written to disk when "Sandbox 1" is
- enabled. Fixes bugs 19556 and 19957; bugfix on 0.2.5.1-alpha and
- 0.2.6.1-alpha respectively.
- o Minor bugfixes (user interface):
- - Remove a warning message "Service [scrubbed] not found after
- descriptor upload". This message appears when one uses HSPOST
- control command to upload a service descriptor. Since there is
- only a descriptor and no service, showing this message is
- pointless and confusing. Fixes bug 19464; bugfix on 0.2.7.2-alpha.
- o Fallback directory list:
- - Add a comment to the generated fallback directory list that
- explains how to comment out unsuitable fallbacks in a way that's
- compatible with the stem fallback parser.
- - Update fallback whitelist and blacklist based on relay operator
- emails. Blacklist unsuitable (non-working, over-volatile)
- fallbacks. Resolves ticket 19071. Patch by teor.
- - Update hard-coded fallback list to remove unsuitable fallbacks.
- Resolves ticket 19071. Patch by teor.
- Changes in version 0.2.8.4-rc - 2016-06-15
- Tor 0.2.8.4-rc is the first release candidate in the Tor 0.2.8 series.
- If we find no new bugs or regressions here, the first stable 0.2.8
- release will be identical to it. It has a few small bugfixes against
- previous versions.
- o Major bugfixes (user interface):
- - Correctly give a warning in the cases where a relay is specified
- by nickname, and one such relay is found, but it is not officially
- Named. Fixes bug 19203; bugfix on 0.2.3.1-alpha.
- o Minor features (build):
- - Tor now builds once again with the recent OpenSSL 1.1 development
- branch (tested against 1.1.0-pre5 and 1.1.0-pre6-dev).
- o Minor features (geoip):
- - Update geoip and geoip6 to the June 7 2016 Maxmind GeoLite2
- Country database.
- o Minor bugfixes (compilation):
- - Cause the unit tests to compile correctly on mingw64 versions that
- lack sscanf. Fixes bug 19213; bugfix on 0.2.7.1-alpha.
- o Minor bugfixes (downloading):
- - Predict more correctly whether we'll be downloading over HTTP when
- we determine the maximum length of a URL. This should avoid a
- "BUG" warning about the Squid HTTP proxy and its URL limits. Fixes
- bug 19191.
- Changes in version 0.2.8.3-alpha - 2016-05-26
- Tor 0.2.8.3-alpha resolves several bugs, most of them introduced over
- the course of the 0.2.8 development cycle. It improves the behavior of
- directory clients, fixes several crash bugs, fixes a gap in compiler
- hardening, and allows the full integration test suite to run on
- more platforms.
- o Major bugfixes (security, client, DNS proxy):
- - Stop a crash that could occur when a client running with DNSPort
- received a query with multiple address types, and the first
- address type was not supported. Found and fixed by Scott Dial.
- Fixes bug 18710; bugfix on 0.2.5.4-alpha.
- o Major bugfixes (security, compilation):
- - Correctly detect compiler flags on systems where _FORTIFY_SOURCE
- is predefined. Previously, our use of -D_FORTIFY_SOURCE would
- cause a compiler warning, thereby making other checks fail, and
- needlessly disabling compiler-hardening support. Fixes one case of
- bug 18841; bugfix on 0.2.3.17-beta. Patch from "trudokal".
- o Major bugfixes (security, directory authorities):
- - Fix a crash and out-of-bounds write during authority voting, when
- the list of relays includes duplicate ed25519 identity keys. Fixes
- bug 19032; bugfix on 0.2.8.2-alpha.
- o Major bugfixes (client, bootstrapping):
- - Check if bootstrap consensus downloads are still needed when the
- linked connection attaches. This prevents tor making unnecessary
- begindir-style connections, which are the only directory
- connections tor clients make since the fix for 18483 was merged.
- - Fix some edge cases where consensus download connections may not
- have been closed, even though they were not needed. Related to fix
- for 18809.
- - Make relays retry consensus downloads the correct number of times,
- rather than the more aggressive client retry count. Fixes part of
- ticket 18809.
- - Stop downloading consensuses when we have a consensus, even if we
- don't have all the certificates for it yet. Fixes bug 18809;
- bugfix on 0.2.8.1-alpha. Patches by arma and teor.
- o Major bugfixes (directory mirrors):
- - Decide whether to advertise begindir support in the the same way
- we decide whether to advertise our DirPort. Allowing these
- decisions to become out-of-sync led to surprising behavior like
- advertising begindir support when hibernation made us not
- advertise a DirPort. Resolves bug 18616; bugfix on 0.2.8.1-alpha.
- Patch by teor.
- o Major bugfixes (IPv6 bridges, client):
- - Actually use IPv6 addresses when selecting directory addresses for
- IPv6 bridges. Fixes bug 18921; bugfix on 0.2.8.1-alpha. Patch
- by "teor".
- o Major bugfixes (key management):
- - If OpenSSL fails to generate an RSA key, do not retain a dangling
- pointer to the previous (uninitialized) key value. The impact here
- should be limited to a difficult-to-trigger crash, if OpenSSL is
- running an engine that makes key generation failures possible, or
- if OpenSSL runs out of memory. Fixes bug 19152; bugfix on
- 0.2.1.10-alpha. Found by Yuan Jochen Kang, Suman Jana, and
- Baishakhi Ray.
- o Major bugfixes (testing):
- - Fix a bug that would block 'make test-network-all' on systems where
- IPv6 packets were lost. Fixes bug 19008; bugfix on tor-0.2.7.3-rc.
- - Avoid "WSANOTINITIALISED" warnings in the unit tests. Fixes bug 18668;
- bugfix on 0.2.8.1-alpha.
- o Minor features (clients):
- - Make clients, onion services, and bridge relays always use an
- encrypted begindir connection for directory requests. Resolves
- ticket 18483. Patch by "teor".
- o Minor features (fallback directory mirrors):
- - Give each fallback the same weight for client selection; restrict
- fallbacks to one per operator; report fallback directory detail
- changes when rebuilding list; add new fallback directory mirrors
- to the whitelist; update fallback directories based on the latest
- OnionOO data; and any other minor simplifications and fixes.
- Closes tasks 17158, 17905, 18749, bug 18689, and fixes part of bug
- 18812 on 0.2.8.1-alpha; patch by "teor".
- o Minor features (geoip):
- - Update geoip and geoip6 to the May 4 2016 Maxmind GeoLite2
- Country database.
- o Minor bugfixes (assert, portability):
- - Fix an assertion failure in memarea.c on systems where "long" is
- shorter than the size of a pointer. Fixes bug 18716; bugfix
- on 0.2.1.1-alpha.
- o Minor bugfixes (bootstrap):
- - Consistently use the consensus download schedule for authority
- certificates. Fixes bug 18816; bugfix on 0.2.4.13-alpha.
- o Minor bugfixes (build):
- - Remove a pair of redundant AM_CONDITIONAL declarations from
- configure.ac. Fixes one final case of bug 17744; bugfix
- on 0.2.8.2-alpha.
- - Resolve warnings when building on systems that are concerned with
- signed char. Fixes bug 18728; bugfix on 0.2.7.2-alpha
- and 0.2.6.1-alpha.
- - When libscrypt.h is found, but no libscrypt library can be linked,
- treat libscrypt as absent. Fixes bug 19161; bugfix
- on 0.2.6.1-alpha.
- o Minor bugfixes (client):
- - Turn all TestingClientBootstrap* into non-testing torrc options.
- This changes simply renames them by removing "Testing" in front of
- them and they do not require TestingTorNetwork to be enabled
- anymore. Fixes bug 18481; bugfix on 0.2.8.1-alpha.
- - Make directory node selection more reliable, mainly for IPv6-only
- clients and clients with few reachable addresses. Fixes bug 18929;
- bugfix on 0.2.8.1-alpha. Patch by "teor".
- o Minor bugfixes (controller, microdescriptors):
- - Make GETINFO dir/status-vote/current/consensus conform to the
- control specification by returning "551 Could not open cached
- consensus..." when not caching consensuses. Fixes bug 18920;
- bugfix on 0.2.2.6-alpha.
- o Minor bugfixes (crypto, portability):
- - The SHA3 and SHAKE routines now produce the correct output on Big
- Endian systems. No code calls either algorithm yet, so this is
- primarily a build fix. Fixes bug 18943; bugfix on 0.2.8.1-alpha.
- - Tor now builds again with the recent OpenSSL 1.1 development
- branch (tested against 1.1.0-pre4 and 1.1.0-pre5-dev). Closes
- ticket 18286.
- o Minor bugfixes (directories):
- - When fetching extrainfo documents, compare their SHA256 digests
- and Ed25519 signing key certificates with the routerinfo that led
- us to fetch them, rather than with the most recent routerinfo.
- Otherwise we generate many spurious warnings about mismatches.
- Fixes bug 17150; bugfix on 0.2.7.2-alpha.
- o Minor bugfixes (logging):
- - When we can't generate a signing key because OfflineMasterKey is
- set, do not imply that we should have been able to load it. Fixes
- bug 18133; bugfix on 0.2.7.2-alpha.
- - Stop periodic_event_dispatch() from blasting twelve lines per
- second at loglevel debug. Fixes bug 18729; fix on 0.2.8.1-alpha.
- - When rejecting a misformed INTRODUCE2 cell, only log at
- PROTOCOL_WARN severity. Fixes bug 18761; bugfix on 0.2.8.2-alpha.
- o Minor bugfixes (pluggable transports):
- - Avoid reporting a spurious error when we decide that we don't need
- to terminate a pluggable transport because it has already exited.
- Fixes bug 18686; bugfix on 0.2.5.5-alpha.
- o Minor bugfixes (pointer arithmetic):
- - Fix a bug in memarea_alloc() that could have resulted in remote
- heap write access, if Tor had ever passed an unchecked size to
- memarea_alloc(). Fortunately, all the sizes we pass to
- memarea_alloc() are pre-checked to be less than 128 kilobytes.
- Fixes bug 19150; bugfix on 0.2.1.1-alpha. Bug found by
- Guido Vranken.
- o Minor bugfixes (relays):
- - Consider more config options when relays decide whether to
- regenerate their descriptor. Fixes more of bug 12538; bugfix
- on 0.2.8.1-alpha.
- - Resolve some edge cases where we might launch an ORPort
- reachability check even when DisableNetwork is set. Noticed while
- fixing bug 18616; bugfix on 0.2.3.9-alpha.
- o Minor bugfixes (statistics):
- - We now include consensus downloads via IPv6 in our directory-
- request statistics. Fixes bug 18460; bugfix on 0.2.3.14-alpha.
- o Minor bugfixes (testing):
- - Allow directories in small networks to bootstrap by skipping
- DirPort checks when the consensus has no exits. Fixes bug 19003;
- bugfix on 0.2.8.1-alpha. Patch by teor.
- - Fix a small memory leak that would occur when the
- TestingEnableCellStatsEvent option was turned on. Fixes bug 18673;
- bugfix on 0.2.5.2-alpha.
- o Minor bugfixes (time handling):
- - When correcting a corrupt 'struct tm' value, fill in the tm_wday
- field. Otherwise, our unit tests crash on Windows. Fixes bug
- 18977; bugfix on 0.2.2.25-alpha.
- o Documentation:
- - Document the contents of the 'datadir/keys' subdirectory in the
- manual page. Closes ticket 17621.
- - Stop recommending use of nicknames to identify relays in our
- MapAddress documentation. Closes ticket 18312.
- Changes in version 0.2.8.2-alpha - 2016-03-28
- Tor 0.2.8.2-alpha is the second alpha in its series. It fixes numerous
- bugs in earlier versions of Tor, including some that prevented
- authorities using Tor 0.2.7.x from running correctly. IPv6 and
- directory support should also be much improved.
- o New system requirements:
- - Tor no longer supports versions of OpenSSL with a broken
- implementation of counter mode. (This bug was present in OpenSSL
- 1.0.0, and was fixed in OpenSSL 1.0.0a.) Tor still detects, but no
- longer runs with, these versions.
- - Tor no longer attempts to support platforms where the "time_t"
- type is unsigned. (To the best of our knowledge, only OpenVMS does
- this, and Tor has never actually built on OpenVMS.) Closes
- ticket 18184.
- - Tor now uses Autoconf version 2.63 or later, and Automake 1.11 or
- later (released in 2008 and 2009 respectively). If you are
- building Tor from the git repository instead of from the source
- distribution, and your tools are older than this, you will need to
- upgrade. Closes ticket 17732.
- o Major bugfixes (security, pointers):
- - Avoid a difficult-to-trigger heap corruption attack when extending
- a smartlist to contain over 16GB of pointers. Fixes bug 18162;
- bugfix on 0.1.1.11-alpha, which fixed a related bug incompletely.
- Reported by Guido Vranken.
- o Major bugfixes (bridges, pluggable transports):
- - Modify the check for OR connections to private addresses. Allow
- bridges on private addresses, including pluggable transports that
- ignore the (potentially private) address in the bridge line. Fixes
- bug 18517; bugfix on 0.2.8.1-alpha. Reported by gk, patch by teor.
- o Major bugfixes (compilation):
- - Repair hardened builds under the clang compiler. Previously, our
- use of _FORTIFY_SOURCE would conflict with clang's address
- sanitizer. Fixes bug 14821; bugfix on 0.2.5.4-alpha.
- o Major bugfixes (crash on shutdown):
- - Correctly handle detaching circuits from muxes when shutting down.
- Fixes bug 18116; bugfix on 0.2.8.1-alpha.
- - Fix an assert-on-exit bug related to counting memory usage in
- rephist.c. Fixes bug 18651; bugfix on 0.2.8.1-alpha.
- o Major bugfixes (crash on startup):
- - Fix a segfault during startup: If a Unix domain socket was
- configured as listener (such as a ControlSocket or a SocksPort
- "unix:" socket), and tor was started as root but not configured to
- switch to another user, tor would segfault while trying to string
- compare a NULL value. Fixes bug 18261; bugfix on 0.2.8.1-alpha.
- Patch by weasel.
- o Major bugfixes (dns proxy mode, crash):
- - Avoid crashing when running as a DNS proxy. Fixes bug 16248;
- bugfix on 0.2.0.1-alpha. Patch from "cypherpunks".
- o Major bugfixes (relays, bridge clients):
- - Ensure relays always allow IPv4 OR and Dir connections. Ensure
- bridge clients use the address configured in the bridge line.
- Fixes bug 18348; bugfix on 0.2.8.1-alpha. Reported by sysrqb,
- patch by teor.
- o Major bugfixes (voting):
- - Actually enable support for authorities to match routers by their
- Ed25519 identities. Previously, the code had been written, but
- some debugging code that had accidentally been left in the
- codebase made it stay turned off. Fixes bug 17702; bugfix
- on 0.2.7.2-alpha.
- - When collating votes by Ed25519 identities, authorities now
- include a "NoEdConsensus" flag if the ed25519 value (or lack
- thereof) for a server does not reflect the majority consensus.
- Related to bug 17668; bugfix on 0.2.7.2-alpha.
- - When generating a vote with keypinning disabled, never include two
- entries for the same ed25519 identity. This bug was causing
- authorities to generate votes that they could not parse when a
- router violated key pinning by changing its RSA identity but
- keeping its Ed25519 identity. Fixes bug 17668; fixes part of bug
- 18318. Bugfix on 0.2.7.2-alpha.
- o Minor features (security, win32):
- - Set SO_EXCLUSIVEADDRUSE on Win32 to avoid a local port-stealing
- attack. Fixes bug 18123; bugfix on all tor versions. Patch
- by teor.
- o Minor features (bug-resistance):
- - Make Tor survive errors involving connections without a
- corresponding event object. Previously we'd fail with an
- assertion; now we produce a log message. Related to bug 16248.
- o Minor features (build):
- - Detect systems with FreeBSD-derived kernels (such as GNU/kFreeBSD)
- as having possible IPFW support. Closes ticket 18448. Patch from
- Steven Chamberlain.
- o Minor features (code hardening):
- - Use tor_snprintf() and tor_vsnprintf() even in external and low-
- level code, to harden against accidental failures to NUL-
- terminate. Part of ticket 17852. Patch from jsturgix. Found
- with Flawfinder.
- o Minor features (crypto):
- - Validate the hard-coded Diffie-Hellman parameters and ensure that
- p is a safe prime, and g is a suitable generator. Closes
- ticket 18221.
- o Minor features (geoip):
- - Update geoip and geoip6 to the March 3 2016 Maxmind GeoLite2
- Country database.
- o Minor features (hidden service directory):
- - Streamline relay-side hsdir handling: when relays consider whether
- to accept an uploaded hidden service descriptor, they no longer
- check whether they are one of the relays in the network that is
- "supposed" to handle that descriptor. Implements ticket 18332.
- o Minor features (IPv6):
- - Add ClientPreferIPv6DirPort, which is set to 0 by default. If set
- to 1, tor prefers IPv6 directory addresses.
- - Add ClientUseIPv4, which is set to 1 by default. If set to 0, tor
- avoids using IPv4 for client OR and directory connections.
- - Try harder to obey the IP version restrictions "ClientUseIPv4 0",
- "ClientUseIPv6 0", "ClientPreferIPv6ORPort", and
- "ClientPreferIPv6DirPort". Closes ticket 17840; patch by teor.
- o Minor features (linux seccomp2 sandbox):
- - Reject attempts to change our Address with "Sandbox 1" enabled.
- Changing Address with Sandbox turned on would never actually work,
- but previously it would fail in strange and confusing ways. Found
- while fixing 18548.
- o Minor features (robustness):
- - Exit immediately with an error message if the code attempts to use
- Libevent without having initialized it. This should resolve some
- frequently-made mistakes in our unit tests. Closes ticket 18241.
- o Minor features (unix domain sockets):
- - Add a new per-socket option, RelaxDirModeCheck, to allow creating
- Unix domain sockets without checking the permissions on the parent
- directory. (Tor checks permissions by default because some
- operating systems only check permissions on the parent directory.
- However, some operating systems do look at permissions on the
- socket, and tor's default check is unneeded.) Closes ticket 18458.
- Patch by weasel.
- o Minor bugfixes (exit policies, security):
- - Refresh an exit relay's exit policy when interface addresses
- change. Previously, tor only refreshed the exit policy when the
- configured external address changed. Fixes bug 18208; bugfix on
- 0.2.7.3-rc. Patch by teor.
- o Minor bugfixes (security, hidden services):
- - Prevent hidden services connecting to client-supplied rendezvous
- addresses that are reserved as internal or multicast. Fixes bug
- 8976; bugfix on 0.2.3.21-rc. Patch by dgoulet and teor.
- o Minor bugfixes (build):
- - Do not link the unit tests against both the testing and non-
- testing versions of the static libraries. Fixes bug 18490; bugfix
- on 0.2.7.1-alpha.
- - Avoid spurious failures from configure files related to calling
- exit(0) in TOR_SEARCH_LIBRARY. Fixes bug 18625; bugfix on
- 0.2.0.1-alpha. Patch from "cypherpunks".
- - Silence spurious clang-scan warnings in the ed25519_donna code by
- explicitly initializing some objects. Fixes bug 18384; bugfix on
- 0.2.7.2-alpha. Patch by teor.
- o Minor bugfixes (client, bootstrap):
- - Count receipt of new microdescriptors as progress towards
- bootstrapping. Previously, with EntryNodes set, Tor might not
- successfully repopulate the guard set on bootstrapping. Fixes bug
- 16825; bugfix on 0.2.3.1-alpha.
- o Minor bugfixes (code correctness):
- - Update to the latest version of Trunnel, which tries harder to
- avoid generating code that can invoke memcpy(p,NULL,0). Bug found
- by clang address sanitizer. Fixes bug 18373; bugfix
- on 0.2.7.2-alpha.
- o Minor bugfixes (configuration):
- - Fix a tiny memory leak when parsing a port configuration ending in
- ":auto". Fixes bug 18374; bugfix on 0.2.3.3-alpha.
- o Minor bugfixes (containers):
- - If we somehow attempt to construct a heap with more than
- 1073741822 elements, avoid an integer overflow when maintaining
- the heap property. Fixes bug 18296; bugfix on 0.1.2.1-alpha.
- o Minor bugfixes (correctness):
- - Fix a bad memory handling bug that would occur if we had queued a
- cell on a channel's incoming queue. Fortunately, we can't actually
- queue a cell like that as our code is constructed today, but it's
- best to avoid this kind of error, even if there isn't any code
- that triggers it today. Fixes bug 18570; bugfix on 0.2.4.4-alpha.
- o Minor bugfixes (directory):
- - When generating a URL for a directory server on an IPv6 address,
- wrap the IPv6 address in square brackets. Fixes bug 18051; bugfix
- on 0.2.3.9-alpha. Patch from Malek.
- o Minor bugfixes (fallback directory mirrors):
- - When requesting extrainfo descriptors from a trusted directory
- server, check whether it is an authority or a fallback directory
- which supports extrainfo descriptors. Fixes bug 18489; bugfix on
- 0.2.4.7-alpha. Reported by atagar, patch by teor.
- o Minor bugfixes (hidden service, client):
- - Handle the case where the user makes several fast consecutive
- requests to the same .onion address. Previously, the first six
- requests would each trigger a descriptor fetch, each picking a
- directory (there are 6 overall) and the seventh one would fail
- because no directories were left, thereby triggering a close on
- all current directory connections asking for the hidden service.
- The solution here is to not close the connections if we have
- pending directory fetches. Fixes bug 15937; bugfix
- on 0.2.7.1-alpha.
- o Minor bugfixes (hidden service, control port):
- - Add the onion address to the HS_DESC event for the UPLOADED action
- both on success or failure. It was previously hardcoded with
- UNKNOWN. Fixes bug 16023; bugfix on 0.2.7.2-alpha.
- o Minor bugfixes (hidden service, directory):
- - Bridges now refuse "rendezvous2" (hidden service descriptor)
- publish attempts. Suggested by ticket 18332.
- o Minor bugfixes (linux seccomp2 sandbox):
- - Allow the setrlimit syscall, and the prlimit and prlimit64
- syscalls, which some libc implementations use under the hood.
- Fixes bug 15221; bugfix on 0.2.5.1-alpha.
- - Avoid a 10-second delay when starting as a client with "Sandbox 1"
- enabled and no DNS resolvers configured. This should help TAILS
- start up faster. Fixes bug 18548; bugfix on 0.2.5.1-alpha.
- - Fix the sandbox's interoperability with unix domain sockets under
- setuid. Fixes bug 18253; bugfix on 0.2.8.1-alpha.
- o Minor bugfixes (logging):
- - When logging information about an unparsable networkstatus vote or
- consensus, do not say "vote" when we mean consensus. Fixes bug
- 18368; bugfix on 0.2.0.8-alpha.
- - Scrub service name in "unrecognized service ID" log messages.
- Fixes bug 18600; bugfix on 0.2.4.11-alpha.
- - Downgrade logs and backtraces about IP versions to info-level.
- Only log backtraces once each time tor runs. Assists in diagnosing
- bug 18351; bugfix on 0.2.8.1-alpha. Reported by sysrqb and
- Christian, patch by teor.
- o Minor bugfixes (memory safety):
- - Avoid freeing an uninitialized pointer when opening a socket fails
- in get_interface_addresses_ioctl(). Fixes bug 18454; bugfix on
- 0.2.3.11-alpha. Reported by toralf and "cypherpunks", patch
- by teor.
- - Correctly duplicate addresses in get_interface_address6_list().
- Fixes bug 18454; bugfix on 0.2.8.1-alpha. Reported by toralf,
- patch by "cypherpunks".
- - Fix a memory leak in tor-gencert. Fixes part of bug 18672; bugfix
- on 0.2.0.1-alpha.
- - Fix a memory leak in "tor --list-fingerprint". Fixes part of bug
- 18672; bugfix on 0.2.5.1-alpha.
- o Minor bugfixes (private directory):
- - Prevent a race condition when creating private directories. Fixes
- part of bug 17852; bugfix on 0.0.2pre13. Part of ticket 17852.
- Patch from jsturgix. Found with Flawfinder.
- o Minor bugfixes (test networks, IPv6):
- - Allow internal IPv6 addresses in descriptors in test networks.
- Fixes bug 17153; bugfix on 0.2.3.16-alpha. Patch by teor, reported
- by karsten.
- o Minor bugfixes (testing):
- - We no longer disable assertions in the unit tests when coverage is
- enabled. Instead, we require you to say --disable-asserts-in-tests
- to the configure script if you need assertions disabled in the
- unit tests (for example, if you want to perform branch coverage).
- Fixes bug 18242; bugfix on 0.2.7.1-alpha.
- o Minor bugfixes (time parsing):
- - Avoid overflow in tor_timegm when parsing dates in and after 2038
- on platforms with 32-bit time_t. Fixes bug 18479; bugfix on
- 0.0.2pre14. Patch by teor.
- o Minor bugfixes (tor-gencert):
- - Correctly handle the case where an authority operator enters a
- passphrase but sends an EOF before sending a newline. Fixes bug
- 17443; bugfix on 0.2.0.20-rc. Found by junglefowl.
- o Code simplification and refactoring:
- - Quote all the string interpolations in configure.ac -- even those
- which we are pretty sure can't contain spaces. Closes ticket
- 17744. Patch from zerosion.
- - Remove specialized code for non-inplace AES_CTR. 99% of our AES is
- inplace, so there's no need to have a separate implementation for
- the non-inplace code. Closes ticket 18258. Patch from Malek.
- - Simplify return types for some crypto functions that can't
- actually fail. Patch from Hassan Alsibyani. Closes ticket 18259.
- o Documentation:
- - Change build messages to refer to "Fedora" instead of "Fedora
- Core", and "dnf" instead of "yum". Closes tickets 18459 and 18426.
- Patches from "icanhasaccount" and "cypherpunks".
- o Removed features:
- - We no longer maintain an internal freelist in memarea.c.
- Allocators should be good enough to make this code unnecessary,
- and it's doubtful that it ever had any performance benefit.
- o Testing:
- - Fix several warnings from clang's address sanitizer produced in
- the unit tests.
- - Treat backtrace test failures as expected on FreeBSD until we
- solve bug 17808. Closes ticket 18204.
- Changes in version 0.2.8.1-alpha - 2016-02-04
- Tor 0.2.8.1-alpha is the first alpha release in its series. It
- includes numerous small features and bugfixes against previous Tor
- versions, and numerous small infrastructure improvements. The most
- notable features are a set of improvements to the directory subsystem.
- o Major features (security, Linux):
- - When Tor starts as root on Linux and is told to switch user ID, it
- can now retain the capability to bind to low ports. By default,
- Tor will do this only when it's switching user ID and some low
- ports have been configured. You can change this behavior with the
- new option KeepBindCapabilities. Closes ticket 8195.
- o Major features (directory system):
- - When bootstrapping multiple consensus downloads at a time, use the
- first one that starts downloading, and close the rest. This
- reduces failures when authorities or fallback directories are slow
- or down. Together with the code for feature 15775, this feature
- should reduces failures due to fallback churn. Implements ticket
- 4483. Patch by "teor". Implements IPv4 portions of proposal 210 by
- "mikeperry" and "teor".
- - Include a trial list of default fallback directories, based on an
- opt-in survey of suitable relays. Doing this should make clients
- bootstrap more quickly and reliably, and reduce the load on the
- directory authorities. Closes ticket 15775. Patch by "teor".
- Candidates identified using an OnionOO script by "weasel", "teor",
- "gsathya", and "karsten".
- - Previously only relays that explicitly opened a directory port
- (DirPort) accepted directory requests from clients. Now all
- relays, with and without a DirPort, accept and serve tunneled
- directory requests that they receive through their ORPort. You can
- disable this behavior using the new DirCache option. Closes
- ticket 12538.
- o Major key updates:
- - Update the V3 identity key for the dannenberg directory authority:
- it was changed on 18 November 2015. Closes task 17906. Patch
- by "teor".
- o Minor features (security, clock):
- - Warn when the system clock appears to move back in time (when the
- state file was last written in the future). Tor doesn't know that
- consensuses have expired if the clock is in the past. Patch by
- "teor". Implements ticket 17188.
- o Minor features (security, exit policies):
- - ExitPolicyRejectPrivate now rejects more private addresses by
- default. Specifically, it now rejects the relay's outbound bind
- addresses (if configured), and the relay's configured port
- addresses (such as ORPort and DirPort). Fixes bug 17027; bugfix on
- 0.2.0.11-alpha. Patch by "teor".
- o Minor features (security, memory erasure):
- - Set the unused entries in a smartlist to NULL. This helped catch
- a (harmless) bug, and shouldn't affect performance too much.
- Implements ticket 17026.
- - Use SecureMemoryWipe() function to securely clean memory on
- Windows. Previously we'd use OpenSSL's OPENSSL_cleanse() function.
- Implements feature 17986.
- - Use explicit_bzero or memset_s when present. Previously, we'd use
- OpenSSL's OPENSSL_cleanse() function. Closes ticket 7419; patches
- from <logan@hackers.mu> and <selven@hackers.mu>.
- - Make memwipe() do nothing when passed a NULL pointer or buffer of
- zero size. Check size argument to memwipe() for underflow. Fixes
- bug 18089; bugfix on 0.2.3.25 and 0.2.4.6-alpha. Reported by "gk",
- patch by "teor".
- o Minor features (security, RNG):
- - Adjust Tor's use of OpenSSL's RNG APIs so that they absolutely,
- positively are not allowed to fail. Previously we depended on
- internal details of OpenSSL's behavior. Closes ticket 17686.
- - Never use the system entropy output directly for anything besides
- seeding the PRNG. When we want to generate important keys, instead
- of using system entropy directly, we now hash it with the PRNG
- stream. This may help resist certain attacks based on broken OS
- entropy implementations. Closes part of ticket 17694.
- - Use modern system calls (like getentropy() or getrandom()) to
- generate strong entropy on platforms that have them. Closes
- ticket 13696.
- o Minor features (accounting):
- - Added two modes to the AccountingRule option: One for limiting
- only the number of bytes sent ("AccountingRule out"), and one for
- limiting only the number of bytes received ("AccountingRule in").
- Closes ticket 15989; patch from "unixninja92".
- o Minor features (build):
- - Since our build process now uses "make distcheck", we no longer
- force "make dist" to depend on "make check". Closes ticket 17893;
- patch from "cypherpunks."
- - Tor now builds successfully with the recent OpenSSL 1.1
- development branch, and with the latest LibreSSL. Closes tickets
- 17549, 17921, and 17984.
- o Minor features (controller):
- - Adds the FallbackDir entries to 'GETINFO config/defaults'. Closes
- tickets 16774 and 17817. Patch by George Tankersley.
- - New 'GETINFO hs/service/desc/id/' command to retrieve a hidden
- service descriptor from a service's local hidden service
- descriptor cache. Closes ticket 14846.
- - Add 'GETINFO exit-policy/reject-private/[default,relay]', so
- controllers can examine the the reject rules added by
- ExitPolicyRejectPrivate. This makes it easier for stem to display
- exit policies.
- o Minor features (crypto):
- - Add SHA512 support to crypto.c. Closes ticket 17663; patch from
- George Tankersley.
- - Add SHA3 and SHAKE support to crypto.c. Closes ticket 17783.
- - When allocating a digest state object, allocate no more space than
- we actually need. Previously, we would allocate as much space as
- the state for the largest algorithm would need. This change saves
- up to 672 bytes per circuit. Closes ticket 17796.
- - Improve performance when hashing non-multiple of 8 sized buffers,
- based on Andrew Moon's public domain SipHash-2-4 implementation.
- Fixes bug 17544; bugfix on 0.2.5.3-alpha.
- o Minor features (directory downloads):
- - Wait for busy authorities and fallback directories to become non-
- busy when bootstrapping. (A similar change was made in 6c443e987d
- for directory caches chosen from the consensus.) Closes ticket
- 17864; patch by "teor".
- - Add UseDefaultFallbackDirs, which enables any hard-coded fallback
- directory mirrors. The default is 1; set it to 0 to disable
- fallbacks. Implements ticket 17576. Patch by "teor".
- o Minor features (geoip):
- - Update geoip and geoip6 to the January 5 2016 Maxmind GeoLite2
- Country database.
- o Minor features (IPv6):
- - Add an argument 'ipv6=address:orport' to the DirAuthority and
- FallbackDir torrc options, to specify an IPv6 address for an
- authority or fallback directory. Add hard-coded ipv6 addresses for
- directory authorities that have them. Closes ticket 17327; patch
- from Nick Mathewson and "teor".
- - Add address policy assume_action support for IPv6 addresses.
- - Limit IPv6 mask bits to 128.
- - Warn when comparing against an AF_UNSPEC address in a policy, it's
- almost always a bug. Closes ticket 17863; patch by "teor".
- - Allow users to configure directory authorities and fallback
- directory servers with IPv6 addresses and ORPorts. Resolves
- ticket 6027.
- - routerset_parse now accepts IPv6 literal addresses. Fixes bug
- 17060; bugfix on 0.2.1.3-alpha. Patch by "teor".
- - Make tor_ersatz_socketpair work on IPv6-only systems. Fixes bug
- 17638; bugfix on 0.0.2pre8. Patch by "teor".
- o Minor features (logging):
- - When logging to syslog, allow a tag to be added to the syslog
- identity (the string prepended to every log message). The tag can
- be configured with SyslogIdentityTag and defaults to none. Setting
- it to "foo" will cause logs to be tagged as "Tor-foo". Closes
- ticket 17194.
- o Minor features (portability):
- - Use timingsafe_memcmp() where available. Closes ticket 17944;
- patch from <logan@hackers.mu>.
- o Minor features (relay, address discovery):
- - Add a family argument to get_interface_addresses_raw() and
- subfunctions to make network interface address interogation more
- efficient. Now Tor can specifically ask for IPv4, IPv6 or both
- types of interfaces from the operating system. Resolves
- ticket 17950.
- - When get_interface_address6_list(.,AF_UNSPEC,.) is called and
- fails to enumerate interface addresses using the platform-specific
- API, have it rely on the UDP socket fallback technique to try and
- find out what IP addresses (both IPv4 and IPv6) our machine has.
- Resolves ticket 17951.
- o Minor features (replay cache):
- - The replay cache now uses SHA256 instead of SHA1. Implements
- feature 8961. Patch by "teor", issue reported by "rransom".
- o Minor features (unix file permissions):
- - Defer creation of Unix sockets until after setuid. This avoids
- needing CAP_CHOWN and CAP_FOWNER when using systemd's
- CapabilityBoundingSet, or chown and fowner when using SELinux.
- Implements part of ticket 17562. Patch from Jamie Nguyen.
- - If any directory created by Tor is marked as group readable, the
- filesystem group is allowed to be either the default GID or the
- root user. Allowing root to read the DataDirectory prevents the
- need for CAP_READ_SEARCH when using systemd's
- CapabilityBoundingSet, or dac_read_search when using SELinux.
- Implements part of ticket 17562. Patch from Jamie Nguyen.
- - Introduce a new DataDirectoryGroupReadable option. If it is set to
- 1, the DataDirectory will be made readable by the default GID.
- Implements part of ticket 17562. Patch from Jamie Nguyen.
- o Minor bugfixes (accounting):
- - The max bandwidth when using 'AccountRule sum' is now correctly
- logged. Fixes bug 18024; bugfix on 0.2.6.1-alpha. Patch
- from "unixninja92".
- o Minor bugfixes (code correctness):
- - When closing an entry connection, generate a warning if we should
- have sent an end cell for it but we haven't. Fixes bug 17876;
- bugfix on 0.2.3.2-alpha.
- - Assert that allocated memory held by the reputation code is freed
- according to its internal counters. Fixes bug 17753; bugfix
- on 0.1.1.1-alpha.
- - Assert when the TLS contexts fail to initialize. Fixes bug 17683;
- bugfix on 0.0.6.
- o Minor bugfixes (compilation):
- - Mark all object files that include micro-revision.i as depending
- on it, so as to make parallel builds more reliable. Fixes bug
- 17826; bugfix on 0.2.5.1-alpha.
- - Don't try to use the pthread_condattr_setclock() function unless
- it actually exists. Fixes compilation on NetBSD-6.x. Fixes bug
- 17819; bugfix on 0.2.6.3-alpha.
- - Fix backtrace compilation on FreeBSD. Fixes bug 17827; bugfix
- on 0.2.5.2-alpha.
- - Fix compilation of sandbox.c with musl-libc. Fixes bug 17347;
- bugfix on 0.2.5.1-alpha. Patch from 'jamestk'.
- - Fix search for libevent libraries on OpenBSD (and other systems
- that install libevent 1 and libevent 2 in parallel). Fixes bug
- 16651; bugfix on 0.1.0.7-rc. Patch from "rubiate".
- - Isolate environment variables meant for tests from the rest of the
- build system. Fixes bug 17818; bugfix on 0.2.7.3-rc.
- - Replace usage of 'INLINE' with 'inline'. Fixes bug 17804; bugfix
- on 0.0.2pre8.
- - Remove config.log only from make distclean, not from make clean.
- Fixes bug 17924; bugfix on 0.2.4.1-alpha.
- o Minor bugfixes (crypto):
- - Check the return value of HMAC() and assert on failure. Fixes bug
- 17658; bugfix on 0.2.3.6-alpha. Patch by "teor".
- o Minor bugfixes (fallback directories):
- - Mark fallbacks as "too busy" when they return a 503 response,
- rather than just marking authorities. Fixes bug 17572; bugfix on
- 0.2.4.7-alpha. Patch by "teor".
- o Minor bugfixes (IPv6):
- - Update the limits in max_dl_per_request for IPv6 address length.
- Fixes bug 17573; bugfix on 0.2.1.5-alpha.
- o Minor bugfixes (linux seccomp2 sandbox):
- - Fix a crash when using offline master ed25519 keys with the Linux
- seccomp2 sandbox enabled. Fixes bug 17675; bugfix on 0.2.7.3-rc.
- o Minor bugfixes (logging):
- - In log messages that include a function name, use __FUNCTION__
- instead of __PRETTY_FUNCTION__. In GCC, these are synonymous, but
- with clang __PRETTY_FUNCTION__ has extra information we don't
- need. Fixes bug 16563; bugfix on 0.0.2pre8. Fix by Tom van
- der Woerdt.
- - Remove needless quotes from a log message about unparseable
- addresses. Fixes bug 17843; bugfix on 0.2.3.3-alpha.
- o Minor bugfixes (portability):
- - Remove an #endif from configure.ac so that we correctly detect the
- presence of in6_addr.s6_addr32. Fixes bug 17923; bugfix
- on 0.2.0.13-alpha.
- o Minor bugfixes (relays):
- - Check that both the ORPort and DirPort (if present) are reachable
- before publishing a relay descriptor. Otherwise, relays publish a
- descriptor with DirPort 0 when the DirPort reachability test takes
- longer than the ORPort reachability test. Fixes bug 18050; bugfix
- on 0.1.0.1-rc. Reported by "starlight", patch by "teor".
- o Minor bugfixes (relays, hidden services):
- - Refuse connection requests to private OR addresses unless
- ExtendAllowPrivateAddresses is set. Previously, tor would connect,
- then refuse to send any cells to a private address. Fixes bugs
- 17674 and 8976; bugfix on 0.2.3.21-rc. Patch by "teor".
- o Minor bugfixes (safe logging):
- - When logging a malformed hostname received through socks4, scrub
- it if SafeLogging says we should. Fixes bug 17419; bugfix
- on 0.1.1.16-rc.
- o Minor bugfixes (statistics code):
- - Consistently check for overflow in round_*_to_next_multiple_of
- functions, and add unit tests with additional and maximal values.
- Fixes part of bug 13192; bugfix on 0.2.2.1-alpha.
- - Handle edge cases in the laplace functions: avoid division by
- zero, avoid taking the log of zero, and silence clang type
- conversion warnings using round and trunc. Add unit tests for edge
- cases with maximal values. Fixes part of bug 13192; bugfix
- on 0.2.6.2-alpha.
- o Minor bugfixes (testing):
- - The test for log_heartbeat was incorrectly failing in timezones
- with non-integer offsets. Instead of comparing the end of the time
- string against a constant, compare it to the output of
- format_local_iso_time when given the correct input. Fixes bug
- 18039; bugfix on 0.2.5.4-alpha.
- - Make unit tests pass on IPv6-only systems, and systems without
- localhost addresses (like some FreeBSD jails). Fixes bug 17632;
- bugfix on 0.2.7.3-rc. Patch by "teor".
- - Fix a memory leak in the ntor test. Fixes bug 17778; bugfix
- on 0.2.4.8-alpha.
- - Check the full results of SHA256 and SHA512 digests in the unit
- tests. Bugfix on 0.2.2.4-alpha. Patch by "teor".
- o Code simplification and refactoring:
- - Move logging of redundant policy entries in
- policies_parse_exit_policy_internal into its own function. Closes
- ticket 17608; patch from "juce".
- - Extract the more complicated parts of circuit_mark_for_close()
- into a new function that we run periodically before circuits are
- freed. This change removes more than half of the functions
- currently in the "blob". Closes ticket 17218.
- - Clean up a little duplicated code in
- crypto_expand_key_material_TAP(). Closes ticket 17587; patch
- from "pfrankw".
- - Decouple the list of streams waiting to be attached to circuits
- from the overall connection list. This change makes it possible to
- attach streams quickly while simplifying Tor's callgraph and
- avoiding O(N) scans of the entire connection list. Closes
- ticket 17590.
- - When a direct directory request fails immediately on launch,
- instead of relaunching that request from inside the code that
- launches it, instead mark the connection for teardown. This change
- simplifies Tor's callback and prevents the directory-request
- launching code from invoking itself recursively. Closes
- ticket 17589
- - Remove code for configuring OpenSSL dynamic locks; OpenSSL doesn't
- use them. Closes ticket 17926.
- o Documentation:
- - Add a description of the correct use of the '--keygen' command-
- line option. Closes ticket 17583; based on text by 's7r'.
- - Document the minimum HeartbeatPeriod value. Closes ticket 15638.
- - Explain actual minima for BandwidthRate. Closes ticket 16382.
- - Fix a minor formatting typo in the manpage. Closes ticket 17791.
- - Mention torspec URL in the manpage and point the reader to it
- whenever we mention a document that belongs in torspce. Fixes
- issue 17392.
- o Removed features:
- - Remove client-side support for connecting to Tor relays running
- versions of Tor before 0.2.3.6-alpha. These relays didn't support
- the v3 TLS handshake protocol, and are no longer allowed on the
- Tor network. Implements the client side of ticket 11150. Based on
- patches by Tom van der Woerdt.
- o Testing:
- - Add unit tests to check for common RNG failure modes, such as
- returning all zeroes, identical values, or incrementing values
- (OpenSSL's rand_predictable feature). Patch by "teor".
- - Log more information when the backtrace tests fail. Closes ticket
- 17892. Patch from "cypherpunks."
- - Always test both ed25519 backends, so that we can be sure that our
- batch-open replacement code works. Part of ticket 16794.
- - Cover dns_resolve_impl() in dns.c with unit tests. Implements a
- portion of ticket 16831.
- - More unit tests for compat_libevent.c, procmon.c, tortls.c,
- util_format.c, directory.c, and options_validate.c. Closes tickets
- 17075, 17082, 17084, 17003, and 17076 respectively. Patches from
- Ola Bini.
- - Unit tests for directory_handle_command_get. Closes ticket 17004.
- Patch from Reinaldo de Souza Jr.
- Changes in version 0.2.7.6 - 2015-12-10
- Tor version 0.2.7.6 fixes a major bug in entry guard selection, as
- well as a minor bug in hidden service reliability.
- o Major bugfixes (guard selection):
- - Actually look at the Guard flag when selecting a new directory
- guard. When we implemented the directory guard design, we
- accidentally started treating all relays as if they have the Guard
- flag during guard selection, leading to weaker anonymity and worse
- performance. Fixes bug 17772; bugfix on 0.2.4.8-alpha. Discovered
- by Mohsen Imani.
- o Minor features (geoip):
- - Update geoip and geoip6 to the December 1 2015 Maxmind GeoLite2
- Country database.
- o Minor bugfixes (compilation):
- - When checking for net/pfvar.h, include netinet/in.h if possible.
- This fixes transparent proxy detection on OpenBSD. Fixes bug
- 17551; bugfix on 0.1.2.1-alpha. Patch from "rubiate".
- - Fix a compilation warning with Clang 3.6: Do not check the
- presence of an address which can never be NULL. Fixes bug 17781.
- o Minor bugfixes (correctness):
- - When displaying an IPv6 exit policy, include the mask bits
- correctly even when the number is greater than 31. Fixes bug
- 16056; bugfix on 0.2.4.7-alpha. Patch from "gturner".
- - The wrong list was used when looking up expired intro points in a
- rend service object, causing what we think could be reachability
- issues for hidden services, and triggering a BUG log. Fixes bug
- 16702; bugfix on 0.2.7.2-alpha.
- - Fix undefined behavior in the tor_cert_checksig function. Fixes
- bug 17722; bugfix on 0.2.7.2-alpha.
- Changes in version 0.2.7.5 - 2015-11-20
- The Tor 0.2.7 release series is dedicated to the memory of Tor user
- and privacy advocate Caspar Bowden (1961-2015). Caspar worked
- tirelessly to advocate human rights regardless of national borders,
- and oppose the encroachments of mass surveillance. He opposed national
- exceptionalism, he brought clarity to legal and policy debates, he
- understood and predicted the impact of mass surveillance on the world,
- and he laid the groundwork for resisting it. While serving on the Tor
- Project's board of directors, he brought us his uncompromising focus
- on technical excellence in the service of humankind. Caspar was an
- inimitable force for good and a wonderful friend. He was kind,
- humorous, generous, gallant, and believed we should protect one
- another without exception. We honor him here for his ideals, his
- efforts, and his accomplishments. Please honor his memory with works
- that would make him proud.
- Tor 0.2.7.5 is the first stable release in the Tor 0.2.7 series.
- The 0.2.7 series adds a more secure identity key type for relays,
- improves cryptography performance, resolves several longstanding
- hidden-service performance issues, improves controller support for
- hidden services, and includes small bugfixes and performance
- improvements throughout the program. This release series also includes
- more tests than before, and significant simplifications to which parts
- of Tor invoke which others.
- (This release contains no code changes since 0.2.7.4-rc.)
- Changes in version 0.2.7.4-rc - 2015-10-21
- Tor 0.2.7.4-rc is the second release candidate in the 0.2.7 series. It
- fixes some important memory leaks, and a scary-looking (but mostly
- harmless in practice) invalid-read bug. It also has a few small
- bugfixes, notably fixes for compilation and portability on different
- platforms. If no further significant bounds are found, the next
- release will the the official stable release.
- o Major bugfixes (security, correctness):
- - Fix an error that could cause us to read 4 bytes before the
- beginning of an openssl string. This bug could be used to cause
- Tor to crash on systems with unusual malloc implementations, or
- systems with unusual hardening installed. Fixes bug 17404; bugfix
- on 0.2.3.6-alpha.
- o Major bugfixes (correctness):
- - Fix a use-after-free bug in validate_intro_point_failure(). Fixes
- bug 17401; bugfix on 0.2.7.3-rc.
- o Major bugfixes (memory leaks):
- - Fix a memory leak in ed25519 batch signature checking. Fixes bug
- 17398; bugfix on 0.2.6.1-alpha.
- - Fix a memory leak in rend_cache_failure_entry_free(). Fixes bug
- 17402; bugfix on 0.2.7.3-rc.
- - Fix a memory leak when reading an expired signing key from disk.
- Fixes bug 17403; bugfix on 0.2.7.2-rc.
- o Minor features (geoIP):
- - Update geoip and geoip6 to the October 9 2015 Maxmind GeoLite2
- Country database.
- o Minor bugfixes (compilation):
- - Repair compilation with the most recent (unreleased, alpha)
- vesions of OpenSSL 1.1. Fixes part of ticket 17237.
- - Fix an integer overflow warning in test_crypto_slow.c. Fixes bug
- 17251; bugfix on 0.2.7.2-alpha.
- - Fix compilation of sandbox.c with musl-libc. Fixes bug 17347;
- bugfix on 0.2.5.1-alpha. Patch from 'jamestk'.
- o Minor bugfixes (portability):
- - Use libexecinfo on FreeBSD to enable backtrace support. Fixes
- part of bug 17151; bugfix on 0.2.5.2-alpha. Patch from
- Marcin Cieślak.
- o Minor bugfixes (sandbox):
- - Add the "hidserv-stats" filename to our sandbox filter for the
- HiddenServiceStatistics option to work properly. Fixes bug 17354;
- bugfix on 0.2.6.2-alpha. Patch from David Goulet.
- o Minor bugfixes (testing):
- - Add unit tests for get_interface_address* failure cases. Fixes bug
- 17173; bugfix on 0.2.7.3-rc. Patch by fk/teor.
- - Fix breakage when running 'make check' with BSD make. Fixes bug
- 17154; bugfix on 0.2.7.3-rc. Patch by Marcin Cieślak.
- - Make the get_ifaddrs_* unit tests more tolerant of different
- network configurations. (Don't assume every test box has an IPv4
- address, and don't assume every test box has a non-localhost
- address.) Fixes bug 17255; bugfix on 0.2.7.3-rc. Patch by "teor".
- - Skip backtrace tests when backtrace support is not compiled in.
- Fixes part of bug 17151; bugfix on 0.2.7.1-alpha. Patch from
- Marcin Cieślak.
- o Documentation:
- - Fix capitalization of SOCKS in sample torrc. Closes ticket 15609.
- - Note that HiddenServicePorts can take a unix domain socket. Closes
- ticket 17364.
- Changes in version 0.2.7.3-rc - 2015-09-25
- Tor 0.2.7.3-rc is the first release candidate in the 0.2.7 series. It
- contains numerous usability fixes for Ed25519 keys, safeguards against
- several misconfiguration problems, significant simplifications to
- Tor's callgraph, and numerous bugfixes and small features.
- This is the most tested release of Tor to date. The unit tests cover
- 39.40% of the code, and the integration tests (accessible with "make
- test-full-online", requiring stem and chutney and a network
- connection) raise the coverage to 64.49%.
- o Major features (security, hidden services):
- - Hidden services, if using the EntryNodes option, are required to
- use more than one EntryNode, in order to avoid a guard discovery
- attack. (This would only affect people who had configured hidden
- services and manually specified the EntryNodes option with a
- single entry-node. The impact was that it would be easy to
- remotely identify the guard node used by such a hidden service.
- See ticket for more information.) Fixes ticket 14917.
- o Major features (Ed25519 keys, keypinning):
- - The key-pinning option on directory authorities is now advisory-
- only by default. In a future version, or when the AuthDirPinKeys
- option is set, pins are enforced again. Disabling key-pinning
- seemed like a good idea so that we can survive the fallout of any
- usability problems associated with Ed25519 keys. Closes
- ticket 17135.
- o Major features (Ed25519 performance):
- - Improve the speed of Ed25519 operations and Curve25519 keypair
- generation when built targeting 32 bit x86 platforms with SSE2
- available. Implements ticket 16535.
- - Improve the runtime speed of Ed25519 signature verification by
- using Ed25519-donna's batch verification support. Implements
- ticket 16533.
- o Major features (performance testing):
- - The test-network.sh script now supports performance testing.
- Requires corresponding chutney performance testing changes. Patch
- by "teor". Closes ticket 14175.
- o Major features (relay, Ed25519):
- - Significant usability improvements for Ed25519 key management. Log
- messages are better, and the code can recover from far more
- failure conditions. Thanks to "s7r" for reporting and diagnosing
- so many of these!
- - Add a new OfflineMasterKey option to tell Tor never to try loading
- or generating a secret Ed25519 identity key. You can use this in
- combination with tor --keygen to manage offline and/or encrypted
- Ed25519 keys. Implements ticket 16944.
- - Add a --newpass option to allow changing or removing the
- passphrase of an encrypted key with tor --keygen. Implements part
- of ticket 16769.
- - On receiving a HUP signal, check to see whether the Ed25519
- signing key has changed, and reload it if so. Closes ticket 16790.
- o Major bugfixes (relay, Ed25519):
- - Avoid crashing on 'tor --keygen'. Fixes bug 16679; bugfix on
- 0.2.7.2-alpha. Reported by "s7r".
- - Improve handling of expired signing keys with offline master keys.
- Fixes bug 16685; bugfix on 0.2.7.2-alpha. Reported by "s7r".
- o Minor features (client-side privacy):
- - New KeepAliveIsolateSOCKSAuth option to indefinitely extend circuit
- lifespan when IsolateSOCKSAuth and streams with SOCKS
- authentication are attached to the circuit. This allows
- applications like TorBrowser to manage circuit lifetime on their
- own. Implements feature 15482.
- - When logging malformed hostnames from SOCKS5 requests, respect
- SafeLogging configuration. Fixes bug 16891; bugfix on 0.1.1.16-rc.
- o Minor features (compilation):
- - Give a warning as early as possible when trying to build with an
- unsupported OpenSSL version. Closes ticket 16901.
- - Fail during configure if we're trying to build against an OpenSSL
- built without ECC support. Fixes bug 17109, bugfix on 0.2.7.1-alpha
- which started requiring ECC.
- o Minor features (geoip):
- - Update geoip and geoip6 to the September 3 2015 Maxmind GeoLite2
- Country database.
- o Minor features (hidden services):
- - Relays need to have the Fast flag to get the HSDir flag. As this
- is being written, we'll go from 2745 HSDirs down to 2342, a ~14%
- drop. This change should make some attacks against the hidden
- service directory system harder. Fixes ticket 15963.
- - Turn on hidden service statistics collection by setting the torrc
- option HiddenServiceStatistics to "1" by default. (This keeps
- track only of the fraction of traffic used by hidden services, and
- the total number of hidden services in existence.) Closes
- ticket 15254.
- - Client now uses an introduction point failure cache to know when
- to fetch or keep a descriptor in their cache. Previously, failures
- were recorded implicitly, but not explicitly remembered. Closes
- ticket 16389.
- o Minor features (testing, authorities, documentation):
- - New TestingDirAuthVote{Exit,Guard,HSDir}IsStrict flags to
- explicitly manage consensus flags in testing networks. Patch by
- "robgjansen", modified by "teor". Implements part of ticket 14882.
- o Minor bugfixes (security, exit policies):
- - ExitPolicyRejectPrivate now also rejects the relay's published
- IPv6 address (if any), and any publicly routable IPv4 or IPv6
- addresses on any local interfaces. ticket 17027. Patch by "teor".
- Fixes bug 17027; bugfix on 0.2.0.11-alpha.
- o Minor bug fixes (torrc exit policies):
- - In torrc, "accept6 *" and "reject6 *" ExitPolicy lines now only
- produce IPv6 wildcard addresses. Previously they would produce
- both IPv4 and IPv6 wildcard addresses. Patch by "teor". Fixes part
- of bug 16069; bugfix on 0.2.4.7-alpha.
- - When parsing torrc ExitPolicies, we now warn for a number of cases
- where the user's intent is likely to differ from Tor's actual
- behavior. These include: using an IPv4 address with an accept6 or
- reject6 line; using "private" on an accept6 or reject6 line; and
- including any ExitPolicy lines after accept *:* or reject *:*.
- Related to ticket 16069.
- - When parsing torrc ExitPolicies, we now issue an info-level
- message when expanding an "accept/reject *" line to include both
- IPv4 and IPv6 wildcard addresses. Related to ticket 16069.
- - In each instance above, usage advice is provided to avoid the
- message. Resolves ticket 16069. Patch by "teor". Fixes part of bug
- 16069; bugfix on 0.2.4.7-alpha.
- o Minor bugfixes (authority):
- - Don't assign "HSDir" to a router if it isn't Valid and Running.
- Fixes bug 16524; bugfix on 0.2.7.2-alpha.
- - Downgrade log messages about Ed25519 key issues if they are in old
- cached router descriptors. Fixes part of bug 16286; bugfix
- on 0.2.7.2-alpha.
- - When we find an Ed25519 key issue in a cached descriptor, stop
- saying the descriptor was just "uploaded". Fixes another part of
- bug 16286; bugfix on 0.2.7.2-alpha.
- o Minor bugfixes (control port):
- - Repair a warning and a spurious result when getting the maximum
- number of file descriptors from the controller. Fixes bug 16697;
- bugfix on 0.2.7.2-alpha.
- o Minor bugfixes (correctness):
- - When calling channel_free_list(), avoid calling smartlist_remove()
- while inside a FOREACH loop. This partially reverts commit
- 17356fe7fd96af where the correct SMARTLIST_DEL_CURRENT was
- incorrectly removed. Fixes bug 16924; bugfix on 0.2.4.4-alpha.
- o Minor bugfixes (documentation):
- - Advise users on how to configure separate IPv4 and IPv6 exit
- policies in the manpage and sample torrcs. Related to ticket 16069.
- - Fix the usage message of tor-resolve(1) so that it no longer lists
- the removed -F option. Fixes bug 16913; bugfix on 0.2.2.28-beta.
- - Fix an error in the manual page and comments for
- TestingDirAuthVoteHSDir[IsStrict], which suggested that a HSDir
- required "ORPort connectivity". While this is true, it is in no
- way unique to the HSDir flag. Of all the flags, only HSDirs need a
- DirPort configured in order for the authorities to assign that
- particular flag. Patch by "teor". Fixed as part of 14882; bugfix
- on 0.2.6.3-alpha.
- o Minor bugfixes (Ed25519):
- - Fix a memory leak when reading router descriptors with expired
- Ed25519 certificates. Fixes bug 16539; bugfix on 0.2.7.2-alpha.
- o Minor bugfixes (linux seccomp2 sandbox):
- - Allow bridge authorities to run correctly under the seccomp2
- sandbox. Fixes bug 16964; bugfix on 0.2.5.1-alpha.
- - Allow routers with ed25519 keys to run correctly under the
- seccomp2 sandbox. Fixes bug 16965; bugfix on 0.2.7.2-alpha.
- o Minor bugfixes (open file limit):
- - Fix set_max_file_descriptors() to set by default the max open file
- limit to the current limit when setrlimit() fails. Fixes bug
- 16274; bugfix on 0.2.0.10-alpha. Patch by dgoulet.
- o Minor bugfixes (portability):
- - Try harder to normalize the exit status of the Tor process to the
- standard-provided range. Fixes bug 16975; bugfix on every version
- of Tor ever.
- - Check correctly for Windows socket errors in the workqueue
- backend. Fixes bug 16741; bugfix on 0.2.6.3-alpha.
- - Fix the behavior of crypto_rand_time_range() when told to consider
- times before 1970. (These times were possible when running in a
- simulated network environment where time()'s output starts at
- zero.) Fixes bug 16980; bugfix on 0.2.7.1-alpha.
- - Restore correct operation of TLS client-cipher detection on
- OpenSSL 1.1. Fixes bug 14047; bugfix on 0.2.7.2-alpha.
- o Minor bugfixes (relay):
- - Ensure that worker threads actually exit when a fatal error or
- shutdown is indicated. This fix doesn't currently affect the
- behavior of Tor, because Tor workers never indicates fatal error
- or shutdown except in the unit tests. Fixes bug 16868; bugfix
- on 0.2.6.3-alpha.
- - Unblock threads before releasing the work queue mutex to ensure
- predictable scheduling behavior. Fixes bug 16644; bugfix
- on 0.2.6.3-alpha.
- o Code simplification and refactoring:
- - Change the function that's called when we need to retry all
- downloads so that it only reschedules the downloads to happen
- immediately, rather than launching them all at once itself. This
- further simplifies Tor's callgraph.
- - Move some format-parsing functions out of crypto.c and
- crypto_curve25519.c into crypto_format.c and/or util_format.c.
- - Move the client-only parts of init_keys() into a separate
- function. Closes ticket 16763.
- - Simplify the microdesc_free() implementation so that it no longer
- appears (to code analysis tools) to potentially invoke a huge
- suite of other microdesc functions.
- - Simply the control graph further by deferring the inner body of
- directory_all_unreachable() into a callback. Closes ticket 16762.
- - Treat the loss of an owning controller as equivalent to a SIGTERM
- signal. This removes a tiny amount of duplicated code, and
- simplifies our callgraph. Closes ticket 16788.
- - When generating an event to send to the controller, we no longer
- put the event over the network immediately. Instead, we queue
- these events, and use a Libevent callback to deliver them. This
- change simplifies Tor's callgraph by reducing the number of
- functions from which all other Tor functions are reachable. Closes
- ticket 16695.
- - Wrap Windows-only C files inside '#ifdef _WIN32' so that tools
- that try to scan or compile every file on Unix won't decide that
- they are broken.
- - Remove the unused "nulterminate" argument from buf_pullup().
- o Documentation:
- - Recommend a 40 GB example AccountingMax in torrc.sample rather
- than a 4 GB max. Closes ticket 16742.
- - Include the TUNING document in our source tarball. It is referred
- to in the ChangeLog and an error message. Fixes bug 16929; bugfix
- on 0.2.6.1-alpha.
- o Removed code:
- - The internal pure-C tor-fw-helper tool is now removed from the Tor
- distribution, in favor of the pure-Go clone available from
- https:
- used by the C tor-fw-helper are not, in our opinion, very
- confidence- inspiring in their secure-programming techniques.
- Closes ticket 13338.
- - Remove the code that would try to aggressively flush controller
- connections while writing to them. This code was introduced in
- 0.1.2.7-alpha, in order to keep output buffers from exceeding
- their limits. But there is no longer a maximum output buffer size,
- and flushing data in this way caused some undesirable recursions
- in our call graph. Closes ticket 16480.
- o Testing:
- - Make "bridges+hs" the default test network. This tests almost all
- tor functionality during make test-network, while allowing tests
- to succeed on non-IPv6 systems. Requires chutney commit 396da92 in
- test-network-bridges-hs. Closes tickets 16945 (tor) and 16946
- (chutney). Patches by "teor".
- - Autodetect CHUTNEY_PATH if the chutney and Tor sources are side-
- by-side in the same parent directory. Closes ticket 16903. Patch
- by "teor".
- - Use environment variables rather than autoconf substitutions to
- send variables from the build system to the test scripts. This
- change should be easier to maintain, and cause 'make distcheck' to
- work better than before. Fixes bug 17148.
- - Add a new set of callgraph analysis scripts that use clang to
- produce a list of which Tor functions are reachable from which
- other Tor functions. We're planning to use these to help simplify
- our code structure by identifying illogical dependencies.
- - Add new 'test-full' and 'test-full-online' targets to run all
- tests, including integration tests with stem and chutney.
- - Make the test-workqueue test work on Windows by initializing the
- network before we begin.
- - New make target (make test-network-all) to run multiple applicable
- chutney test cases. Patch from Teor; closes 16953.
- - Unit test dns_resolve(), dns_clip_ttl() and dns_get_expiry_ttl()
- functions in dns.c. Implements a portion of ticket 16831.
- - When building Tor with testing coverage enabled, run Chutney tests
- (if any) using the 'tor-cov' coverage binary.
- - When running test-network or test-stem, check for the absence of
- stem/chutney before doing any build operations.
- Changes in version 0.2.7.2-alpha - 2015-07-27
- This, the second alpha in the Tor 0.2.7 series, has a number of new
- features, including a way to manually pick the number of introduction
- points for hidden services, and the much stronger Ed25519 signing key
- algorithm for regular Tor relays (including support for encrypted
- offline identity keys in the new algorithm).
- Support for Ed25519 on relays is currently limited to signing router
- descriptors; later alphas in this series will extend Ed25519 key
- support to more parts of the Tor protocol.
- o Major features (Ed25519 identity keys, Proposal 220):
- - All relays now maintain a stronger identity key, using the Ed25519
- elliptic curve signature format. This master key is designed so
- that it can be kept offline. Relays also generate an online
- signing key, and a set of other Ed25519 keys and certificates.
- These are all automatically regenerated and rotated as needed.
- Implements part of ticket 12498.
- - Directory authorities now vote on Ed25519 identity keys along with
- RSA1024 keys. Implements part of ticket 12498.
- - Directory authorities track which Ed25519 identity keys have been
- used with which RSA1024 identity keys, and do not allow them to
- vary freely. Implements part of ticket 12498.
- - Microdescriptors now include Ed25519 identity keys. Implements
- part of ticket 12498.
- - Add support for offline encrypted Ed25519 master keys. To use this
- feature on your tor relay, run "tor --keygen" to make a new master
- key (or to make a new signing key if you already have a master
- key). Closes ticket 13642.
- o Major features (Hidden services):
- - Add the torrc option HiddenServiceNumIntroductionPoints, to
- specify a fixed number of introduction points. Its maximum value
- is 10 and default is 3. Using this option can increase a hidden
- service's reliability under load, at the cost of making it more
- visible that the hidden service is facing extra load. Closes
- ticket 4862.
- - Remove the adaptive algorithm for choosing the number of
- introduction points, which used to change the number of
- introduction points (poorly) depending on the number of
- connections the HS sees. Closes ticket 4862.
- o Major features (onion key cross-certification):
- - Relay descriptors now include signatures of their own identity
- keys, made using the TAP and ntor onion keys. These signatures
- allow relays to prove ownership of their own onion keys. Because
- of this change, microdescriptors will no longer need to include
- RSA identity keys. Implements proposal 228; closes ticket 12499.
- o Major features (performance):
- - Improve the runtime speed of Ed25519 operations by using the
- public-domain Ed25519-donna by Andrew M. ("floodyberry").
- Implements ticket 16467.
- - Improve the runtime speed of the ntor handshake by using an
- optimized curve25519 basepoint scalarmult implementation from the
- public-domain Ed25519-donna by Andrew M. ("floodyberry"), based on
- ideas by Adam Langley. Implements ticket 9663.
- o Major bugfixes (client-side privacy, also in 0.2.6.9):
- - Properly separate out each SOCKSPort when applying stream
- isolation. The error occurred because each port's session group
- was being overwritten by a default value when the listener
- connection was initialized. Fixes bug 16247; bugfix on
- 0.2.6.3-alpha. Patch by "jojelino".
- o Major bugfixes (hidden service clients, stability, also in 0.2.6.10):
- - Stop refusing to store updated hidden service descriptors on a
- client. This reverts commit 9407040c59218 (which indeed fixed bug
- 14219, but introduced a major hidden service reachability
- regression detailed in bug 16381). This is a temporary fix since
- we can live with the minor issue in bug 14219 (it just results in
- some load on the network) but the regression of 16381 is too much
- of a setback. First-round fix for bug 16381; bugfix
- on 0.2.6.3-alpha.
- o Major bugfixes (hidden services):
- - When cannibalizing a circuit for an introduction point, always
- extend to the chosen exit node (creating a 4 hop circuit).
- Previously Tor would use the current circuit exit node, which
- changed the original choice of introduction point, and could cause
- the hidden service to skip excluded introduction points or
- reconnect to a skipped introduction point. Fixes bug 16260; bugfix
- on 0.1.0.1-rc.
- o Major bugfixes (open file limit):
- - The open file limit wasn't checked before calling
- tor_accept_socket_nonblocking(), which would make Tor exceed the
- limit. Now, before opening a new socket, Tor validates the open
- file limit just before, and if the max has been reached, return an
- error. Fixes bug 16288; bugfix on 0.1.1.1-alpha.
- o Major bugfixes (stability, also in 0.2.6.10):
- - Stop crashing with an assertion failure when parsing certain kinds
- of malformed or truncated microdescriptors. Fixes bug 16400;
- bugfix on 0.2.6.1-alpha. Found by "torkeln"; fix based on a patch
- by "cypherpunks_backup".
- - Stop random client-side assertion failures that could occur when
- connecting to a busy hidden service, or connecting to a hidden
- service while a NEWNYM is in progress. Fixes bug 16013; bugfix
- on 0.1.0.1-rc.
- o Minor features (directory authorities, security, also in 0.2.6.9):
- - The HSDir flag given by authorities now requires the Stable flag.
- For the current network, this results in going from 2887 to 2806
- HSDirs. Also, it makes it harder for an attacker to launch a sybil
- attack by raising the effort for a relay to become Stable to
- require at the very least 7 days, while maintaining the 96 hours
- uptime requirement for HSDir. Implements ticket 8243.
- o Minor features (client):
- - Relax the validation of hostnames in SOCKS5 requests, allowing the
- character '_' to appear, in order to cope with domains observed in
- the wild that are serving non-RFC compliant records. Resolves
- ticket 16430.
- - Relax the validation done to hostnames in SOCKS5 requests, and
- allow a single trailing '.' to cope with clients that pass FQDNs
- using that syntax to explicitly indicate that the domain name is
- fully-qualified. Fixes bug 16674; bugfix on 0.2.6.2-alpha.
- - Add GroupWritable and WorldWritable options to unix-socket based
- SocksPort and ControlPort options. These options apply to a single
- socket, and override {Control,Socks}SocketsGroupWritable. Closes
- ticket 15220.
- o Minor features (control protocol):
- - Support network-liveness GETINFO key and NETWORK_LIVENESS event in
- the control protocol. Resolves ticket 15358.
- o Minor features (directory authorities):
- - Directory authorities no longer vote against the "Fast", "Stable",
- and "HSDir" flags just because they were going to vote against
- "Running": if the consensus turns out to be that the router was
- running, then the authority's vote should count. Patch from Peter
- Retzlaff; closes issue 8712.
- o Minor features (geoip, also in 0.2.6.10):
- - Update geoip to the June 3 2015 Maxmind GeoLite2 Country database.
- - Update geoip6 to the June 3 2015 Maxmind GeoLite2 Country database.
- o Minor features (hidden services):
- - Add the new options "HiddenServiceMaxStreams" and
- "HiddenServiceMaxStreamsCloseCircuit" to allow hidden services to
- limit the maximum number of simultaneous streams per circuit, and
- optionally tear down the circuit when the limit is exceeded. Part
- of ticket 16052.
- o Minor features (portability):
- - Use C99 variadic macros when the compiler is not GCC. This avoids
- failing compilations on MSVC, and fixes a log-file-based race
- condition in our old workarounds. Original patch from Gisle Vanem.
- o Minor bugfixes (compilation, also in 0.2.6.9):
- - Build with --enable-systemd correctly when libsystemd is
- installed, but systemd is not. Fixes bug 16164; bugfix on
- 0.2.6.3-alpha. Patch from Peter Palfrader.
- o Minor bugfixes (controller):
- - Add the descriptor ID in each HS_DESC control event. It was
- missing, but specified in control-spec.txt. Fixes bug 15881;
- bugfix on 0.2.5.2-alpha.
- o Minor bugfixes (crypto error-handling, also in 0.2.6.10):
- - Check for failures from crypto_early_init, and refuse to continue.
- A previous typo meant that we could keep going with an
- uninitialized crypto library, and would have OpenSSL initialize
- its own PRNG. Fixes bug 16360; bugfix on 0.2.5.2-alpha, introduced
- when implementing ticket 4900. Patch by "teor".
- o Minor bugfixes (hidden services):
- - Fix a crash when reloading configuration while at least one
- configured and one ephemeral hidden service exists. Fixes bug
- 16060; bugfix on 0.2.7.1-alpha.
- - Avoid crashing with a double-free bug when we create an ephemeral
- hidden service but adding it fails for some reason. Fixes bug
- 16228; bugfix on 0.2.7.1-alpha.
- o Minor bugfixes (Linux seccomp2 sandbox):
- - Use the sandbox in tor_open_cloexec whether or not O_CLOEXEC is
- defined. Patch by "teor". Fixes bug 16515; bugfix on 0.2.3.1-alpha.
- o Minor bugfixes (Linux seccomp2 sandbox, also in 0.2.6.10):
- - Allow pipe() and pipe2() syscalls in the seccomp2 sandbox: we need
- these when eventfd2() support is missing. Fixes bug 16363; bugfix
- on 0.2.6.3-alpha. Patch from "teor".
- o Minor bugfixes (Linux seccomp2 sandbox, also in 0.2.6.9):
- - Fix sandboxing to work when running as a relay, by allowing the
- renaming of secret_id_key, and allowing the eventfd2 and futex
- syscalls. Fixes bug 16244; bugfix on 0.2.6.1-alpha. Patch by
- Peter Palfrader.
- - Allow systemd connections to work with the Linux seccomp2 sandbox
- code. Fixes bug 16212; bugfix on 0.2.6.2-alpha. Patch by
- Peter Palfrader.
- o Minor bugfixes (relay):
- - Fix a rarely-encountered memory leak when failing to initialize
- the thread pool. Fixes bug 16631; bugfix on 0.2.6.3-alpha. Patch
- from "cypherpunks".
- o Minor bugfixes (systemd):
- - Fix an accidental formatting error that broke the systemd
- configuration file. Fixes bug 16152; bugfix on 0.2.7.1-alpha.
- - Tor's systemd unit file no longer contains extraneous spaces.
- These spaces would sometimes confuse tools like deb-systemd-
- helper. Fixes bug 16162; bugfix on 0.2.5.5-alpha.
- o Minor bugfixes (tests):
- - Use the configured Python executable when running test-stem-full.
- Fixes bug 16470; bugfix on 0.2.7.1-alpha.
- o Minor bugfixes (tests, also in 0.2.6.9):
- - Fix a crash in the unit tests when built with MSVC2013. Fixes bug
- 16030; bugfix on 0.2.6.2-alpha. Patch from "NewEraCracker".
- o Minor bugfixes (threads, comments):
- - Always initialize return value in compute_desc_id in rendcommon.c
- Patch by "teor". Fixes part of bug 16115; bugfix on 0.2.7.1-alpha.
- - Check for NULL values in getinfo_helper_onions(). Patch by "teor".
- Fixes part of bug 16115; bugfix on 0.2.7.1-alpha.
- - Remove undefined directive-in-macro in test_util_writepid clang
- 3.7 complains that using a preprocessor directive inside a macro
- invocation in test_util_writepid in test_util.c is undefined.
- Patch by "teor". Fixes part of bug 16115; bugfix on 0.2.7.1-alpha.
- o Code simplification and refactoring:
- - Define WINVER and _WIN32_WINNT centrally, in orconfig.h, in order
- to ensure they remain consistent and visible everywhere.
- - Remove some vestigial workarounds for the MSVC6 compiler. We
- haven't supported that in ages.
- - The link authentication code has been refactored for better
- testability and reliability. It now uses code generated with the
- "trunnel" binary encoding generator, to reduce the risk of bugs
- due to programmer error. Done as part of ticket 12498.
- o Documentation:
- - Include a specific and (hopefully) accurate documentation of the
- torrc file's meta-format in doc/torrc_format.txt. This is mainly
- of interest to people writing programs to parse or generate torrc
- files. This document is not a commitment to long-term
- compatibility; some aspects of the current format are a bit
- ridiculous. Closes ticket 2325.
- o Removed features:
- - Tor no longer supports copies of OpenSSL that are missing support
- for Elliptic Curve Cryptography. (We began using ECC when
- available in 0.2.4.8-alpha, for more safe and efficient key
- negotiation.) In particular, support for at least one of P256 or
- P224 is now required, with manual configuration needed if only
- P224 is available. Resolves ticket 16140.
- - Tor no longer supports versions of OpenSSL before 1.0. (If you are
- on an operating system that has not upgraded to OpenSSL 1.0 or
- later, and you compile Tor from source, you will need to install a
- more recent OpenSSL to link Tor against.) These versions of
- OpenSSL are still supported by the OpenSSL, but the numerous
- cryptographic improvements in later OpenSSL releases makes them a
- clear choice. Resolves ticket 16034.
- - Remove the HidServDirectoryV2 option. Now all relays offer to
- store hidden service descriptors. Related to 16543.
- - Remove the VoteOnHidServDirectoriesV2 option, since all
- authorities have long set it to 1. Closes ticket 16543.
- o Testing:
- - Document use of coverity, clang static analyzer, and clang dynamic
- undefined behavior and address sanitizers in doc/HACKING. Include
- detailed usage instructions in the blacklist. Patch by "teor".
- Closes ticket 15817.
- - The link authentication protocol code now has extensive tests.
- - The relay descriptor signature testing code now has
- extensive tests.
- - The test_workqueue program now runs faster, and is enabled by
- default as a part of "make check".
- - Now that OpenSSL has its own scrypt implementation, add an unit
- test that checks for interoperability between libscrypt_scrypt()
- and OpenSSL's EVP_PBE_scrypt() so that we could not use libscrypt
- and rely on EVP_PBE_scrypt() whenever possible. Resolves
- ticket 16189.
- Changes in version 0.2.6.10 - 2015-07-12
- Tor version 0.2.6.10 fixes some significant stability and hidden
- service client bugs, bulletproofs the cryptography init process, and
- fixes a bug when using the sandbox code with some older versions of
- Linux. Everyone running an older version, especially an older version
- of 0.2.6, should upgrade.
- o Major bugfixes (hidden service clients, stability):
- - Stop refusing to store updated hidden service descriptors on a
- client. This reverts commit 9407040c59218 (which indeed fixed bug
- 14219, but introduced a major hidden service reachability
- regression detailed in bug 16381). This is a temporary fix since
- we can live with the minor issue in bug 14219 (it just results in
- some load on the network) but the regression of 16381 is too much
- of a setback. First-round fix for bug 16381; bugfix
- on 0.2.6.3-alpha.
- o Major bugfixes (stability):
- - Stop crashing with an assertion failure when parsing certain kinds
- of malformed or truncated microdescriptors. Fixes bug 16400;
- bugfix on 0.2.6.1-alpha. Found by "torkeln"; fix based on a patch
- by "cypherpunks_backup".
- - Stop random client-side assertion failures that could occur when
- connecting to a busy hidden service, or connecting to a hidden
- service while a NEWNYM is in progress. Fixes bug 16013; bugfix
- on 0.1.0.1-rc.
- o Minor features (geoip):
- - Update geoip to the June 3 2015 Maxmind GeoLite2 Country database.
- - Update geoip6 to the June 3 2015 Maxmind GeoLite2 Country database.
- o Minor bugfixes (crypto error-handling):
- - Check for failures from crypto_early_init, and refuse to continue.
- A previous typo meant that we could keep going with an
- uninitialized crypto library, and would have OpenSSL initialize
- its own PRNG. Fixes bug 16360; bugfix on 0.2.5.2-alpha, introduced
- when implementing ticket 4900. Patch by "teor".
- o Minor bugfixes (Linux seccomp2 sandbox):
- - Allow pipe() and pipe2() syscalls in the seccomp2 sandbox: we need
- these when eventfd2() support is missing. Fixes bug 16363; bugfix
- on 0.2.6.3-alpha. Patch from "teor".
- Changes in version 0.2.6.9 - 2015-06-11
- Tor 0.2.6.9 fixes a regression in the circuit isolation code, increases the
- requirements for receiving an HSDir flag, and addresses some other small
- bugs in the systemd and sandbox code. Clients using circuit isolation
- should upgrade; all directory authorities should upgrade.
- o Major bugfixes (client-side privacy):
- - Properly separate out each SOCKSPort when applying stream
- isolation. The error occurred because each port's session group was
- being overwritten by a default value when the listener connection
- was initialized. Fixes bug 16247; bugfix on 0.2.6.3-alpha. Patch
- by "jojelino".
- o Minor feature (directory authorities, security):
- - The HSDir flag given by authorities now requires the Stable flag.
- For the current network, this results in going from 2887 to 2806
- HSDirs. Also, it makes it harder for an attacker to launch a sybil
- attack by raising the effort for a relay to become Stable which
- takes at the very least 7 days to do so and by keeping the 96
- hours uptime requirement for HSDir. Implements ticket 8243.
- o Minor bugfixes (compilation):
- - Build with --enable-systemd correctly when libsystemd is
- installed, but systemd is not. Fixes bug 16164; bugfix on
- 0.2.6.3-alpha. Patch from Peter Palfrader.
- o Minor bugfixes (Linux seccomp2 sandbox):
- - Fix sandboxing to work when running as a relaymby renaming of
- secret_id_key, and allowing the eventfd2 and futex syscalls. Fixes
- bug 16244; bugfix on 0.2.6.1-alpha. Patch by Peter Palfrader.
- - Allow systemd connections to work with the Linux seccomp2 sandbox
- code. Fixes bug 16212; bugfix on 0.2.6.2-alpha. Patch by
- Peter Palfrader.
- o Minor bugfixes (tests):
- - Fix a crash in the unit tests when built with MSVC2013. Fixes bug
- 16030; bugfix on 0.2.6.2-alpha. Patch from "NewEraCracker".
- Changes in version 0.2.6.8 - 2015-05-21
- Tor 0.2.6.8 fixes a bit of dodgy code in parsing INTRODUCE2 cells, and
- fixes an authority-side bug in assigning the HSDir flag. All directory
- authorities should upgrade.
- o Major bugfixes (hidden services, backport from 0.2.7.1-alpha):
- - Revert commit that made directory authorities assign the HSDir
- flag to relay without a DirPort; this was bad because such relays
- can't handle BEGIN_DIR cells. Fixes bug 15850; bugfix
- on 0.2.6.3-alpha.
- o Minor bugfixes (hidden service, backport from 0.2.7.1-alpha):
- - Fix an out-of-bounds read when parsing invalid INTRODUCE2 cells on
- a client authorized hidden service. Fixes bug 15823; bugfix
- on 0.2.1.6-alpha.
- o Minor features (geoip):
- - Update geoip to the April 8 2015 Maxmind GeoLite2 Country database.
- - Update geoip6 to the April 8 2015 Maxmind GeoLite2
- Country database.
- Changes in version 0.2.7.1-alpha - 2015-05-12
- Tor 0.2.7.1-alpha is the first alpha release in its series. It
- includes numerous small features and bugfixes against previous Tor
- versions, and numerous small infrastructure improvements. The most
- notable features are several new ways for controllers to interact with
- the hidden services subsystem.
- o New system requirements:
- - Tor no longer includes workarounds to support Libevent versions
- before 1.3e. Libevent 2.0 or later is recommended. Closes
- ticket 15248.
- o Major features (controller):
- - Add the ADD_ONION and DEL_ONION commands that allow the creation
- and management of hidden services via the controller. Closes
- ticket 6411.
- - New "GETINFO onions/current" and "GETINFO onions/detached"
- commands to get information about hidden services created via the
- controller. Part of ticket 6411.
- - New HSFETCH command to launch a request for a hidden service
- descriptor. Closes ticket 14847.
- - New HSPOST command to upload a hidden service descriptor. Closes
- ticket 3523. Patch by "DonnchaC".
- o Major bugfixes (hidden services):
- - Revert commit that made directory authorities assign the HSDir
- flag to relay without a DirPort; this was bad because such relays
- can't handle BEGIN_DIR cells. Fixes bug 15850; bugfix
- on 0.2.6.3-alpha.
- o Minor features (clock-jump tolerance):
- - Recover better when our clock jumps back many hours, like might
- happen for Tails or Whonix users who start with a very wrong
- hardware clock, use Tor to discover a more accurate time, and then
- fix their clock. Resolves part of ticket 8766.
- o Minor features (command-line interface):
- - Make --hash-password imply --hush to prevent unnecessary noise.
- Closes ticket 15542. Patch from "cypherpunks".
- - Print a warning whenever we find a relative file path being used
- as torrc option. Resolves issue 14018.
- o Minor features (controller):
- - Add DirAuthority lines for default directory authorities to the
- output of the "GETINFO config/defaults" command if not already
- present. Implements ticket 14840.
- - Controllers can now use "GETINFO hs/client/desc/id/..." to
- retrieve items from the client's hidden service descriptor cache.
- Closes ticket 14845.
- - Implement a new controller command "GETINFO status/fresh-relay-
- descs" to fetch a descriptor/extrainfo pair that was generated on
- demand just for the controller's use. Implements ticket 14784.
- o Minor features (DoS-resistance):
- - Make it harder for attackers to overload hidden services with
- introductions, by blocking multiple introduction requests on the
- same circuit. Resolves ticket 15515.
- o Minor features (geoip):
- - Update geoip to the April 8 2015 Maxmind GeoLite2 Country database.
- - Update geoip6 to the April 8 2015 Maxmind GeoLite2
- Country database.
- o Minor features (HS popularity countermeasure):
- - To avoid leaking HS popularity, don't cycle the introduction point
- when we've handled a fixed number of INTRODUCE2 cells but instead
- cycle it when a random number of introductions is reached, thus
- making it more difficult for an attacker to find out the amount of
- clients that have used the introduction point for a specific HS.
- Closes ticket 15745.
- o Minor features (logging):
- - Include the Tor version in all LD_BUG log messages, since people
- tend to cut and paste those into the bugtracker. Implements
- ticket 15026.
- o Minor features (pluggable transports):
- - When launching managed pluggable transports on Linux systems,
- attempt to have the kernel deliver a SIGTERM on tor exit if the
- pluggable transport process is still running. Resolves
- ticket 15471.
- - When launching managed pluggable transports, setup a valid open
- stdin in the child process that can be used to detect if tor has
- terminated. The "TOR_PT_EXIT_ON_STDIN_CLOSE" environment variable
- can be used by implementations to detect this new behavior.
- Resolves ticket 15435.
- o Minor features (testing):
- - Add a test to verify that the compiler does not eliminate our
- memwipe() implementation. Closes ticket 15377.
- - Add make rule `check-changes` to verify the format of changes
- files. Closes ticket 15180.
- - Add unit tests for control_event_is_interesting(). Add a compile-
- time check that the number of events doesn't exceed the capacity
- of control_event_t.event_mask. Closes ticket 15431, checks for
- bugs similar to 13085. Patch by "teor".
- - Command-line argument tests moved to Stem. Resolves ticket 14806.
- - Integrate the ntor, backtrace, and zero-length keys tests into the
- automake test suite. Closes ticket 15344.
- - Remove assertions during builds to determine Tor's test coverage.
- We don't want to trigger these even in assertions, so including
- them artificially makes our branch coverage look worse than it is.
- This patch provides the new test-stem-full and coverage-html-full
- configure options. Implements ticket 15400.
- o Minor bugfixes (build):
- - Improve out-of-tree builds by making non-standard rules work and
- clean up additional files and directories. Fixes bug 15053; bugfix
- on 0.2.7.0-alpha.
- o Minor bugfixes (command-line interface):
- - When "--quiet" is provided along with "--validate-config", do not
- write anything to stdout on success. Fixes bug 14994; bugfix
- on 0.2.3.3-alpha.
- - When complaining about bad arguments to "--dump-config", use
- stderr, not stdout.
- o Minor bugfixes (configuration, unit tests):
- - Only add the default fallback directories when the DirAuthorities,
- AlternateDirAuthority, and FallbackDir directory config options
- are set to their defaults. The default fallback directory list is
- currently empty, this fix will only change tor's behavior when it
- has default fallback directories. Includes unit tests for
- consider_adding_dir_servers(). Fixes bug 15642; bugfix on
- 90f6071d8dc0 in 0.2.4.7-alpha. Patch by "teor".
- o Minor bugfixes (correctness):
- - For correctness, avoid modifying a constant string in
- handle_control_postdescriptor. Fixes bug 15546; bugfix
- on 0.1.1.16-rc.
- - Remove side-effects from tor_assert() calls. This was harmless,
- because we never disable assertions, but it is bad style and
- unnecessary. Fixes bug 15211; bugfix on 0.2.5.5, 0.2.2.36,
- and 0.2.0.10.
- o Minor bugfixes (hidden service):
- - Fix an out-of-bounds read when parsing invalid INTRODUCE2 cells on
- a client authorized hidden service. Fixes bug 15823; bugfix
- on 0.2.1.6-alpha.
- - Remove an extraneous newline character from the end of hidden
- service descriptors. Fixes bug 15296; bugfix on 0.2.0.10-alpha.
- o Minor bugfixes (interface):
- - Print usage information for --dump-config when it is used without
- an argument. Also, fix the error message to use different wording
- and add newline at the end. Fixes bug 15541; bugfix
- on 0.2.5.1-alpha.
- o Minor bugfixes (logs):
- - When building Tor under Clang, do not include an extra set of
- parentheses in log messages that include function names. Fixes bug
- 15269; bugfix on every released version of Tor when compiled with
- recent enough Clang.
- o Minor bugfixes (network):
- - When attempting to use fallback technique for network interface
- lookup, disregard loopback and multicast addresses since they are
- unsuitable for public communications.
- o Minor bugfixes (statistics):
- - Disregard the ConnDirectionStatistics torrc options when Tor is
- not a relay since in that mode of operation no sensible data is
- being collected and because Tor might run into measurement hiccups
- when running as a client for some time, then becoming a relay.
- Fixes bug 15604; bugfix on 0.2.2.35.
- o Minor bugfixes (test networks):
- - When self-testing reachability, use ExtendAllowPrivateAddresses to
- determine if local/private addresses imply reachability. The
- previous fix used TestingTorNetwork, which implies
- ExtendAllowPrivateAddresses, but this excluded rare configurations
- where ExtendAllowPrivateAddresses is set but TestingTorNetwork is
- not. Fixes bug 15771; bugfix on 0.2.6.1-alpha. Patch by "teor",
- issue discovered by CJ Ess.
- o Minor bugfixes (testing):
- - Check for matching value in server response in ntor_ref.py. Fixes
- bug 15591; bugfix on 0.2.4.8-alpha. Reported and fixed
- by "joelanders".
- - Set the severity correctly when testing
- get_interface_addresses_ifaddrs() and
- get_interface_addresses_win32(), so that the tests fail gracefully
- instead of triggering an assertion. Fixes bug 15759; bugfix on
- 0.2.6.3-alpha. Reported by Nicolas Derive.
- o Code simplification and refactoring:
- - Move the hacky fallback code out of get_interface_address6() into
- separate function and get it covered with unit-tests. Resolves
- ticket 14710.
- - Refactor hidden service client-side cache lookup to intelligently
- report its various failure cases, and disentangle failure cases
- involving a lack of introduction points. Closes ticket 14391.
- - Use our own Base64 encoder instead of OpenSSL's, to allow more
- control over the output. Part of ticket 15652.
- o Documentation:
- - Improve the descriptions of statistics-related torrc options in
- the manpage to describe rationale and possible uses cases. Fixes
- issue 15550.
- - Improve the layout and formatting of ./configure --help messages.
- Closes ticket 15024. Patch from "cypherpunks".
- - Standardize on the term "server descriptor" in the manual page.
- Previously, we had used "router descriptor", "server descriptor",
- and "relay descriptor" interchangeably. Part of ticket 14987.
- o Removed code:
- - Remove `USE_OPENSSL_BASE64` and the corresponding fallback code
- and always use the internal Base64 decoder. The internal decoder
- has been part of tor since 0.2.0.10-alpha, and no one should
- be using the OpenSSL one. Part of ticket 15652.
- - Remove the 'tor_strclear()' function; use memwipe() instead.
- Closes ticket 14922.
- o Removed features:
- - Remove the (seldom-used) DynamicDHGroups feature. For anti-
- fingerprinting we now recommend pluggable transports; for forward-
- secrecy in TLS, we now use the P-256 group. Closes ticket 13736.
- - Remove the undocumented "--digests" command-line option. It
- complicated our build process, caused subtle build issues on
- multiple platforms, and is now redundant since we started
- including git version identifiers. Closes ticket 14742.
- - Tor no longer contains checks for ancient directory cache versions
- that didn't know about microdescriptors.
- - Tor no longer contains workarounds for stat files generated by
- super-old versions of Tor that didn't choose guards sensibly.
- Changes in version 0.2.4.27 - 2015-04-06
- Tor 0.2.4.27 backports two fixes from 0.2.6.7 for security issues that
- could be used by an attacker to crash hidden services, or crash clients
- visiting hidden services. Hidden services should upgrade as soon as
- possible; clients should upgrade whenever packages become available.
- This release also backports a simple improvement to make hidden
- services a bit less vulnerable to denial-of-service attacks.
- o Major bugfixes (security, hidden service):
- - Fix an issue that would allow a malicious client to trigger an
- assertion failure and halt a hidden service. Fixes bug 15600;
- bugfix on 0.2.1.6-alpha. Reported by "disgleirio".
- - Fix a bug that could cause a client to crash with an assertion
- failure when parsing a malformed hidden service descriptor. Fixes
- bug 15601; bugfix on 0.2.1.5-alpha. Found by "DonnchaC".
- o Minor features (DoS-resistance, hidden service):
- - Introduction points no longer allow multiple INTRODUCE1 cells to
- arrive on the same circuit. This should make it more expensive for
- attackers to overwhelm hidden services with introductions.
- Resolves ticket 15515.
- Changes in version 0.2.5.12 - 2015-04-06
- Tor 0.2.5.12 backports two fixes from 0.2.6.7 for security issues that
- could be used by an attacker to crash hidden services, or crash clients
- visiting hidden services. Hidden services should upgrade as soon as
- possible; clients should upgrade whenever packages become available.
- This release also backports a simple improvement to make hidden
- services a bit less vulnerable to denial-of-service attacks.
- o Major bugfixes (security, hidden service):
- - Fix an issue that would allow a malicious client to trigger an
- assertion failure and halt a hidden service. Fixes bug 15600;
- bugfix on 0.2.1.6-alpha. Reported by "disgleirio".
- - Fix a bug that could cause a client to crash with an assertion
- failure when parsing a malformed hidden service descriptor. Fixes
- bug 15601; bugfix on 0.2.1.5-alpha. Found by "DonnchaC".
- o Minor features (DoS-resistance, hidden service):
- - Introduction points no longer allow multiple INTRODUCE1 cells to
- arrive on the same circuit. This should make it more expensive for
- attackers to overwhelm hidden services with introductions.
- Resolves ticket 15515.
- Changes in version 0.2.6.7 - 2015-04-06
- Tor 0.2.6.7 fixes two security issues that could be used by an
- attacker to crash hidden services, or crash clients visiting hidden
- services. Hidden services should upgrade as soon as possible; clients
- should upgrade whenever packages become available.
- This release also contains two simple improvements to make hidden
- services a bit less vulnerable to denial-of-service attacks.
- o Major bugfixes (security, hidden service):
- - Fix an issue that would allow a malicious client to trigger an
- assertion failure and halt a hidden service. Fixes bug 15600;
- bugfix on 0.2.1.6-alpha. Reported by "disgleirio".
- - Fix a bug that could cause a client to crash with an assertion
- failure when parsing a malformed hidden service descriptor. Fixes
- bug 15601; bugfix on 0.2.1.5-alpha. Found by "DonnchaC".
- o Minor features (DoS-resistance, hidden service):
- - Introduction points no longer allow multiple INTRODUCE1 cells to
- arrive on the same circuit. This should make it more expensive for
- attackers to overwhelm hidden services with introductions.
- Resolves ticket 15515.
- - Decrease the amount of reattempts that a hidden service performs
- when its rendezvous circuits fail. This reduces the computational
- cost for running a hidden service under heavy load. Resolves
- ticket 11447.
- Changes in version 0.2.6.6 - 2015-03-24
- Tor 0.2.6.6 is the first stable release in the 0.2.6 series.
- It adds numerous safety, security, correctness, and performance
- improvements. Client programs can be configured to use more kinds of
- sockets, AutomapHosts works better, the multithreading backend is
- improved, cell transmission is refactored, test coverage is much
- higher, more denial-of-service attacks are handled, guard selection is
- improved to handle long-term guards better, pluggable transports
- should work a bit better, and some annoying hidden service performance
- bugs should be addressed.
- o Minor bugfixes (portability):
- - Use the correct datatype in the SipHash-2-4 function to prevent
- compilers from assuming any sort of alignment. Fixes bug 15436;
- bugfix on 0.2.5.3-alpha.
- Changes in version 0.2.6.5-rc - 2015-03-18
- Tor 0.2.6.5-rc is the second and (hopefully) last release candidate in
- the 0.2.6. It fixes a small number of bugs found in 0.2.6.4-rc.
- o Major bugfixes (client):
- - Avoid crashing when making certain configuration option changes on
- clients. Fixes bug 15245; bugfix on 0.2.6.3-alpha. Reported
- by "anonym".
- o Major bugfixes (pluggable transports):
- - Initialize the extended OR Port authentication cookie before
- launching pluggable transports. This prevents a race condition
- that occured when server-side pluggable transports would cache the
- authentication cookie before it has been (re)generated. Fixes bug
- 15240; bugfix on 0.2.5.1-alpha.
- o Major bugfixes (portability):
- - Do not crash on startup when running on Solaris. Fixes a bug
- related to our fix for 9495; bugfix on 0.2.6.1-alpha. Reported
- by "ruebezahl".
- o Minor features (heartbeat):
- - On relays, report how many connections we negotiated using each
- version of the Tor link protocols. This information will let us
- know if removing support for very old versions of the Tor
- protocols is harming the network. Closes ticket 15212.
- o Code simplification and refactoring:
- - Refactor main loop to extract the 'loop' part. This makes it
- easier to run Tor under Shadow. Closes ticket 15176.
- Changes in version 0.2.5.11 - 2015-03-17
- Tor 0.2.5.11 is the second stable release in the 0.2.5 series.
- It backports several bugfixes from the 0.2.6 branch, including a
- couple of medium-level security fixes for relays and exit nodes.
- It also updates the list of directory authorities.
- o Directory authority changes:
- - Remove turtles as a directory authority.
- - Add longclaw as a new (v3) directory authority. This implements
- ticket 13296. This keeps the directory authority count at 9.
- - The directory authority Faravahar has a new IP address. This
- closes ticket 14487.
- o Major bugfixes (crash, OSX, security):
- - Fix a remote denial-of-service opportunity caused by a bug in
- OSX's _strlcat_chk() function. Fixes bug 15205; bug first appeared
- in OSX 10.9.
- o Major bugfixes (relay, stability, possible security):
- - Fix a bug that could lead to a relay crashing with an assertion
- failure if a buffer of exactly the wrong layout was passed to
- buf_pullup() at exactly the wrong time. Fixes bug 15083; bugfix on
- 0.2.0.10-alpha. Patch from 'cypherpunks'.
- - Do not assert if the 'data' pointer on a buffer is advanced to the
- very end of the buffer; log a BUG message instead. Only assert if
- it is past that point. Fixes bug 15083; bugfix on 0.2.0.10-alpha.
- o Major bugfixes (exit node stability):
- - Fix an assertion failure that could occur under high DNS load.
- Fixes bug 14129; bugfix on Tor 0.0.7rc1. Found by "jowr";
- diagnosed and fixed by "cypherpunks".
- o Major bugfixes (Linux seccomp2 sandbox):
- - Upon receiving sighup with the seccomp2 sandbox enabled, do not
- crash during attempts to call wait4. Fixes bug 15088; bugfix on
- 0.2.5.1-alpha. Patch from "sanic".
- o Minor features (controller):
- - New "GETINFO bw-event-cache" to get information about recent
- bandwidth events. Closes ticket 14128. Useful for controllers to
- get recent bandwidth history after the fix for ticket 13988.
- o Minor features (geoip):
- - Update geoip to the March 3 2015 Maxmind GeoLite2 Country database.
- - Update geoip6 to the March 3 2015 Maxmind GeoLite2
- Country database.
- o Minor bugfixes (client, automapping):
- - Avoid crashing on torrc lines for VirtualAddrNetworkIPv[4|6] when
- no value follows the option. Fixes bug 14142; bugfix on
- 0.2.4.7-alpha. Patch by "teor".
- - Fix a memory leak when using AutomapHostsOnResolve. Fixes bug
- 14195; bugfix on 0.1.0.1-rc.
- o Minor bugfixes (compilation):
- - Build without warnings with the stock OpenSSL srtp.h header, which
- has a duplicate declaration of SSL_get_selected_srtp_profile().
- Fixes bug 14220; this is OpenSSL's bug, not ours.
- o Minor bugfixes (directory authority):
- - Allow directory authorities to fetch more data from one another if
- they find themselves missing lots of votes. Previously, they had
- been bumping against the 10 MB queued data limit. Fixes bug 14261;
- bugfix on 0.1.2.5-alpha.
- - Enlarge the buffer to read bwauth generated files to avoid an
- issue when parsing the file in dirserv_read_measured_bandwidths().
- Fixes bug 14125; bugfix on 0.2.2.1-alpha.
- o Minor bugfixes (statistics):
- - Increase period over which bandwidth observations are aggregated
- from 15 minutes to 4 hours. Fixes bug 13988; bugfix on 0.0.8pre1.
- o Minor bugfixes (preventative security, C safety):
- - When reading a hexadecimal, base-32, or base-64 encoded value from
- a string, always overwrite the whole output buffer. This prevents
- some bugs where we would look at (but fortunately, not reveal)
- uninitialized memory on the stack. Fixes bug 14013; bugfix on all
- versions of Tor.
- Changes in version 0.2.4.26 - 2015-03-17
- Tor 0.2.4.26 includes an updated list of directory authorities. It
- also backports a couple of stability and security bugfixes from 0.2.5
- and beyond.
- o Directory authority changes:
- - Remove turtles as a directory authority.
- - Add longclaw as a new (v3) directory authority. This implements
- ticket 13296. This keeps the directory authority count at 9.
- - The directory authority Faravahar has a new IP address. This
- closes ticket 14487.
- o Major bugfixes (exit node stability, also in 0.2.6.3-alpha):
- - Fix an assertion failure that could occur under high DNS load.
- Fixes bug 14129; bugfix on Tor 0.0.7rc1. Found by "jowr";
- diagnosed and fixed by "cypherpunks".
- o Major bugfixes (relay, stability, possible security, also in 0.2.6.4-rc):
- - Fix a bug that could lead to a relay crashing with an assertion
- failure if a buffer of exactly the wrong layout was passed to
- buf_pullup() at exactly the wrong time. Fixes bug 15083; bugfix on
- 0.2.0.10-alpha. Patch from 'cypherpunks'.
- - Do not assert if the 'data' pointer on a buffer is advanced to the
- very end of the buffer; log a BUG message instead. Only assert if
- it is past that point. Fixes bug 15083; bugfix on 0.2.0.10-alpha.
- o Minor features (geoip):
- - Update geoip to the March 3 2015 Maxmind GeoLite2 Country database.
- - Update geoip6 to the March 3 2015 Maxmind GeoLite2
- Country database.
- Changes in version 0.2.6.4-rc - 2015-03-09
- Tor 0.2.6.4-alpha fixes an issue in the directory code that an
- attacker might be able to use in order to crash certain Tor
- directories. It also resolves some minor issues left over from, or
- introduced in, Tor 0.2.6.3-alpha or earlier.
- o Major bugfixes (crash, OSX, security):
- - Fix a remote denial-of-service opportunity caused by a bug in
- OSX's _strlcat_chk() function. Fixes bug 15205; bug first appeared
- in OSX 10.9.
- o Major bugfixes (relay, stability, possible security):
- - Fix a bug that could lead to a relay crashing with an assertion
- failure if a buffer of exactly the wrong layout is passed to
- buf_pullup() at exactly the wrong time. Fixes bug 15083; bugfix on
- 0.2.0.10-alpha. Patch from "cypherpunks".
- - Do not assert if the 'data' pointer on a buffer is advanced to the
- very end of the buffer; log a BUG message instead. Only assert if
- it is past that point. Fixes bug 15083; bugfix on 0.2.0.10-alpha.
- o Major bugfixes (FreeBSD IPFW transparent proxy):
- - Fix address detection with FreeBSD transparent proxies, when
- "TransProxyType ipfw" is in use. Fixes bug 15064; bugfix
- on 0.2.5.4-alpha.
- o Major bugfixes (Linux seccomp2 sandbox):
- - Pass IPPROTO_TCP rather than 0 to socket(), so that the Linux
- seccomp2 sandbox doesn't fail. Fixes bug 14989; bugfix
- on 0.2.6.3-alpha.
- - Allow AF_UNIX hidden services to be used with the seccomp2
- sandbox. Fixes bug 15003; bugfix on 0.2.6.3-alpha.
- - Upon receiving sighup with the seccomp2 sandbox enabled, do not
- crash during attempts to call wait4. Fixes bug 15088; bugfix on
- 0.2.5.1-alpha. Patch from "sanic".
- o Minor features (controller):
- - Messages about problems in the bootstrap process now include
- information about the server we were trying to connect to when we
- noticed the problem. Closes ticket 15006.
- o Minor features (geoip):
- - Update geoip to the March 3 2015 Maxmind GeoLite2 Country database.
- - Update geoip6 to the March 3 2015 Maxmind GeoLite2
- Country database.
- o Minor features (logs):
- - Quiet some log messages in the heartbeat and at startup. Closes
- ticket 14950.
- o Minor bugfixes (certificate handling):
- - If an authority operator accidentally makes a signing certificate
- with a future publication time, do not discard its real signing
- certificates. Fixes bug 11457; bugfix on 0.2.0.3-alpha.
- - Remove any old authority certificates that have been superseded
- for at least two days. Previously, we would keep superseded
- certificates until they expired, if they were published close in
- time to the certificate that superseded them. Fixes bug 11454;
- bugfix on 0.2.1.8-alpha.
- o Minor bugfixes (compilation):
- - Fix a compilation warning on s390. Fixes bug 14988; bugfix
- on 0.2.5.2-alpha.
- - Fix a compilation warning on FreeBSD. Fixes bug 15151; bugfix
- on 0.2.6.2-alpha.
- o Minor bugfixes (testing):
- - Fix endianness issues in unit test for resolve_my_address() to
- have it pass on big endian systems. Fixes bug 14980; bugfix on
- Tor 0.2.6.3-alpha.
- - Avoid a side-effect in a tor_assert() in the unit tests. Fixes bug
- 15188; bugfix on 0.1.2.3-alpha. Patch from Tom van der Woerdt.
- - When running the new 'make test-stem' target, use the configured
- python binary. Fixes bug 15037; bugfix on 0.2.6.3-alpha. Patch
- from "cypherpunks".
- - When running the zero-length-keys tests, do not use the default
- torrc file. Fixes bug 15033; bugfix on 0.2.6.3-alpha. Reported
- by "reezer".
- o Directory authority IP change:
- - The directory authority Faravahar has a new IP address. This
- closes ticket 14487.
- o Removed code:
- - Remove some lingering dead code that once supported mempools.
- Mempools were disabled by default in 0.2.5, and removed entirely
- in 0.2.6.3-alpha. Closes more of ticket 14848; patch
- by "cypherpunks".
- Changes in version 0.2.6.3-alpha - 2015-02-19
- Tor 0.2.6.3-alpha is the third (and hopefully final) alpha release in
- the 0.2.6.x series. It introduces support for more kinds of sockets,
- makes it harder to accidentally run an exit, improves our
- multithreading backend, incorporates several fixes for the
- AutomapHostsOnResolve option, and fixes numerous other bugs besides.
- If no major regressions or security holes are found in this version,
- the next version will be a release candidate.
- o Deprecated versions:
- - Tor relays older than 0.2.4.18-rc are no longer allowed to
- advertise themselves on the network. Closes ticket 13555.
- o Major features (security, unix domain sockets):
- - Allow SocksPort to be an AF_UNIX Unix Domain Socket. Now high risk
- applications can reach Tor without having to create AF_INET or
- AF_INET6 sockets, meaning they can completely disable their
- ability to make non-Tor network connections. To create a socket of
- this type, use "SocksPort unix:/path/to/socket". Implements
- ticket 12585.
- - Support mapping hidden service virtual ports to AF_UNIX sockets.
- The syntax is "HiddenServicePort 80 unix:/path/to/socket".
- Implements ticket 11485.
- o Major features (changed defaults):
- - Prevent relay operators from unintentionally running exits: When a
- relay is configured as an exit node, we now warn the user unless
- the "ExitRelay" option is set to 1. We warn even more loudly if
- the relay is configured with the default exit policy, since this
- can indicate accidental misconfiguration. Setting "ExitRelay 0"
- stops Tor from running as an exit relay. Closes ticket 10067.
- o Major features (directory system):
- - When downloading server- or microdescriptors from a directory
- server, we no longer launch multiple simultaneous requests to the
- same server. This reduces load on the directory servers,
- especially when directory guards are in use. Closes ticket 9969.
- - When downloading server- or microdescriptors over a tunneled
- connection, do not limit the length of our requests to what the
- Squid proxy is willing to handle. Part of ticket 9969.
- - Authorities can now vote on the correct digests and latest
- versions for different software packages. This allows packages
- that include Tor to use the Tor authority system as a way to get
- notified of updates and their correct digests. Implements proposal
- 227. Closes ticket 10395.
- o Major features (guards):
- - Introduce the Guardfraction feature to improves load balancing on
- guard nodes. Specifically, it aims to reduce the traffic gap that
- guard nodes experience when they first get the Guard flag. This is
- a required step if we want to increase the guard lifetime to 9
- months or greater. Closes ticket 9321.
- o Major features (performance):
- - Make the CPU worker implementation more efficient by avoiding the
- kernel and lengthening pipelines. The original implementation used
- sockets to transfer data from the main thread to the workers, and
- didn't allow any thread to be assigned more than a single piece of
- work at once. The new implementation avoids communications
- overhead by making requests in shared memory, avoiding kernel IO
- where possible, and keeping more requests in flight at once.
- Implements ticket 9682.
- o Major features (relay):
- - Raise the minimum acceptable configured bandwidth rate for bridges
- to 50 KiB/sec and for relays to 75 KiB/sec. (The old values were
- 20 KiB/sec.) Closes ticket 13822.
- o Major bugfixes (exit node stability):
- - Fix an assertion failure that could occur under high DNS load.
- Fixes bug 14129; bugfix on Tor 0.0.7rc1. Found by "jowr";
- diagnosed and fixed by "cypherpunks".
- o Major bugfixes (mixed relay-client operation):
- - When running as a relay and client at the same time (not
- recommended), if we decide not to use a new guard because we want
- to retry older guards, only close the locally-originating circuits
- passing through that guard. Previously we would close all the
- circuits through that guard. Fixes bug 9819; bugfix on
- 0.2.1.1-alpha. Reported by "skruffy".
- o Minor features (build):
- - New --disable-system-torrc compile-time option to prevent Tor from
- looking for the system-wide torrc or torrc-defaults files.
- Resolves ticket 13037.
- o Minor features (controller):
- - Include SOCKS_USERNAME and SOCKS_PASSWORD values in controller
- events so controllers can observe circuit isolation inputs. Closes
- ticket 8405.
- - ControlPort now supports the unix:/path/to/socket syntax as an
- alternative to the ControlSocket option, for consistency with
- SocksPort and HiddenServicePort. Closes ticket 14451.
- - New "GETINFO bw-event-cache" to get information about recent
- bandwidth events. Closes ticket 14128. Useful for controllers to
- get recent bandwidth history after the fix for ticket 13988.
- o Minor features (Denial of service resistance):
- - Count the total number of bytes used storing hidden service
- descriptors against the value of MaxMemInQueues. If we're low on
- memory, and more than 20% of our memory is used holding hidden
- service descriptors, free them until no more than 10% of our
- memory holds hidden service descriptors. Free the least recently
- fetched descriptors first. Resolves ticket 13806.
- - When we have recently been under memory pressure (over 3/4 of
- MaxMemInQueues is allocated), then allocate smaller zlib objects
- for small requests. Closes ticket 11791.
- o Minor features (geoip):
- - Update geoip and geoip6 files to the January 7 2015 Maxmind
- GeoLite2 Country database.
- o Minor features (guard nodes):
- - Reduce the time delay before saving guard status to disk from 10
- minutes to 30 seconds (or from one hour to 10 minutes if
- AvoidDiskWrites is set). Closes ticket 12485.
- o Minor features (hidden service):
- - Make Sybil attacks against hidden services harder by changing the
- minimum time required to get the HSDir flag from 25 hours up to 96
- hours. Addresses ticket 14149.
- - New option "HiddenServiceAllowUnknownPorts" to allow hidden
- services to disable the anti-scanning feature introduced in
- 0.2.6.2-alpha. With this option not set, a connection to an
- unlisted port closes the circuit. With this option set, only a
- RELAY_DONE cell is sent. Closes ticket 14084.
- o Minor features (interface):
- - Implement "-f -" command-line option to read torrc configuration
- from standard input, if you don't want to store the torrc file in
- the file system. Implements feature 13865.
- o Minor features (logging):
- - Add a count of unique clients to the bridge heartbeat message.
- Resolves ticket 6852.
- - Suppress "router info incompatible with extra info" message when
- reading extrainfo documents from cache. (This message got loud
- around when we closed bug 9812 in 0.2.6.2-alpha.) Closes
- ticket 13762.
- - Elevate hidden service authorized-client message from DEBUG to
- INFO. Closes ticket 14015.
- o Minor features (stability):
- - Add assertions in our hash-table iteration code to check for
- corrupted values that could cause infinite loops. Closes
- ticket 11737.
- o Minor features (systemd):
- - Various improvements and modernizations in systemd hardening
- support. Closes ticket 13805. Patch from Craig Andrews.
- o Minor features (testing networks):
- - Drop the minimum RendPostPeriod on a testing network to 5 seconds,
- and the default on a testing network to 2 minutes. Drop the
- MIN_REND_INITIAL_POST_DELAY on a testing network to 5 seconds, but
- keep the default on a testing network at 30 seconds. This reduces
- HS bootstrap time to around 25 seconds. Also, change the default
- time in test-network.sh to match. Closes ticket 13401. Patch
- by "teor".
- - Create TestingDirAuthVoteHSDir to correspond to
- TestingDirAuthVoteExit/Guard. Ensures that authorities vote the
- HSDir flag for the listed relays regardless of uptime or ORPort
- connectivity. Respects the value of VoteOnHidServDirectoriesV2.
- Partial implementation for ticket 14067. Patch by "teor".
- o Minor features (tor2web mode):
- - Introduce the config option Tor2webRendezvousPoints, which allows
- clients in Tor2webMode to select a specific Rendezvous Point to be
- used in HS circuits. This might allow better performance for
- Tor2Web nodes. Implements ticket 12844.
- o Minor bugfixes (client DNS):
- - Report the correct cached DNS expiration times on SOCKS port or in
- DNS replies. Previously, we would report everything as "never
- expires." Fixes bug 14193; bugfix on 0.2.3.17-beta.
- - Avoid a small memory leak when we find a cached answer for a
- reverse DNS lookup in a client-side DNS cache. (Remember, client-
- side DNS caching is off by default, and is not recommended.) Fixes
- bug 14259; bugfix on 0.2.0.1-alpha.
- o Minor bugfixes (client, automapping):
- - Avoid crashing on torrc lines for VirtualAddrNetworkIPv[4|6] when
- no value follows the option. Fixes bug 14142; bugfix on
- 0.2.4.7-alpha. Patch by "teor".
- - Fix a memory leak when using AutomapHostsOnResolve. Fixes bug
- 14195; bugfix on 0.1.0.1-rc.
- - Prevent changes to other options from removing the wildcard value
- "." from "AutomapHostsSuffixes". Fixes bug 12509; bugfix
- on 0.2.0.1-alpha.
- - Allow MapAddress and AutomapHostsOnResolve to work together when
- an address is mapped into another address type (like .onion) that
- must be automapped at resolve time. Fixes bug 7555; bugfix
- on 0.2.0.1-alpha.
- o Minor bugfixes (client, bridges):
- - When we are using bridges and we had a network connectivity
- problem, only retry connecting to our currently configured
- bridges, not all bridges we know about and remember using. Fixes
- bug 14216; bugfix on 0.2.2.17-alpha.
- o Minor bugfixes (client, IPv6):
- - Reject socks requests to literal IPv6 addresses when IPv6Traffic
- flag is not set; and not because the NoIPv4Traffic flag was set.
- Previously we'd looked at the NoIPv4Traffic flag for both types of
- literal addresses. Fixes bug 14280; bugfix on 0.2.4.7-alpha.
- o Minor bugfixes (compilation):
- - The address of an array in the middle of a structure will always
- be non-NULL. clang recognises this and complains. Disable the
- tautologous and redundant check to silence this warning. Fixes bug
- 14001; bugfix on 0.2.1.2-alpha.
- - Avoid warnings when building with systemd 209 or later. Fixes bug
- 14072; bugfix on 0.2.6.2-alpha. Patch from "h.venev".
- - Compile correctly with (unreleased) OpenSSL 1.1.0 headers.
- Addresses ticket 14188.
- - Build without warnings with the stock OpenSSL srtp.h header, which
- has a duplicate declaration of SSL_get_selected_srtp_profile().
- Fixes bug 14220; this is OpenSSL's bug, not ours.
- - Do not compile any code related to Tor2Web mode when Tor2Web mode
- is not enabled at compile time. Previously, this code was included
- in a disabled state. See discussion on ticket 12844.
- - Remove the --disable-threads configure option again. It was
- accidentally partially reintroduced in 29ac883606d6d. Fixes bug
- 14819; bugfix on 0.2.6.2-alpha.
- o Minor bugfixes (controller):
- - Report "down" in response to the "GETINFO entry-guards" command
- when relays are down with an unreachable_since value. Previously,
- we would report "up". Fixes bug 14184; bugfix on 0.1.2.2-alpha.
- - Avoid crashing on a malformed EXTENDCIRCUIT command. Fixes bug
- 14116; bugfix on 0.2.2.9-alpha.
- - Add a code for the END_CIRC_REASON_IP_NOW_REDUNDANT circuit close
- reason. Fixes bug 14207; bugfix on 0.2.6.2-alpha.
- o Minor bugfixes (directory authority):
- - Allow directory authorities to fetch more data from one another if
- they find themselves missing lots of votes. Previously, they had
- been bumping against the 10 MB queued data limit. Fixes bug 14261;
- bugfix on 0.1.2.5-alpha.
- - Do not attempt to download extrainfo documents which we will be
- unable to validate with a matching server descriptor. Fixes bug
- 13762; bugfix on 0.2.0.1-alpha.
- - Fix a bug that was truncating AUTHDIR_NEWDESC events sent to the
- control port. Fixes bug 14953; bugfix on 0.2.0.1-alpha.
- - Enlarge the buffer to read bwauth generated files to avoid an
- issue when parsing the file in dirserv_read_measured_bandwidths().
- Fixes bug 14125; bugfix on 0.2.2.1-alpha.
- o Minor bugfixes (file handling):
- - Stop failing when key files are zero-length. Instead, generate new
- keys, and overwrite the empty key files. Fixes bug 13111; bugfix
- on all versions of Tor. Patch by "teor".
- - Stop generating a fresh .old RSA onion key file when the .old file
- is missing. Fixes part of 13111; bugfix on 0.0.6rc1.
- - Avoid overwriting .old key files with empty key files.
- - Skip loading zero-length extrainfo store, router store, stats,
- state, and key files.
- - Avoid crashing when trying to reload a torrc specified as a
- relative path with RunAsDaemon turned on. Fixes bug 13397; bugfix
- on 0.2.3.11-alpha.
- o Minor bugfixes (hidden services):
- - Close the introduction circuit when we have no more usable intro
- points, instead of waiting for it to time out. This also ensures
- that no follow-up HS descriptor fetch is triggered when the
- circuit eventually times out. Fixes bug 14224; bugfix on 0.0.6.
- - When fetching a hidden service descriptor for a down service that
- was recently up, do not keep refetching until we try the same
- replica twice in a row. Fixes bug 14219; bugfix on 0.2.0.10-alpha.
- - Successfully launch Tor with a nonexistent hidden service
- directory. Our fix for bug 13942 didn't catch this case. Fixes bug
- 14106; bugfix on 0.2.6.2-alpha.
- o Minor bugfixes (logging):
- - Avoid crashing when there are more log domains than entries in
- domain_list. Bugfix on 0.2.3.1-alpha.
- - Add a string representation for LD_SCHED. Fixes bug 14740; bugfix
- on 0.2.6.1-alpha.
- - Don't log messages to stdout twice when starting up. Fixes bug
- 13993; bugfix on 0.2.6.1-alpha.
- o Minor bugfixes (parsing):
- - Stop accepting milliseconds (or other junk) at the end of
- descriptor publication times. Fixes bug 9286; bugfix on 0.0.2pre25.
- - Support two-number and three-number version numbers correctly, in
- case we change the Tor versioning system in the future. Fixes bug
- 13661; bugfix on 0.0.8pre1.
- o Minor bugfixes (path counting):
- - When deciding whether the consensus lists any exit nodes, count
- the number listed in the consensus, not the number we have
- descriptors for. Fixes part of bug 14918; bugfix on 0.2.6.2-alpha.
- - When deciding whether we have any exit nodes, only examine
- ExitNodes when the ExitNodes option is actually set. Fixes part of
- bug 14918; bugfix on 0.2.6.2-alpha.
- - Get rid of redundant and possibly scary warnings that we are
- missing directory information while we bootstrap. Fixes part of
- bug 14918; bugfix on 0.2.6.2-alpha.
- o Minor bugfixes (portability):
- - Fix the ioctl()-based network interface lookup code so that it
- will work on systems that have variable-length struct ifreq, for
- example Mac OS X.
- - Fix scheduler compilation on targets where char is unsigned. Fixes
- bug 14764; bugfix on 0.2.6.2-alpha. Reported by Christian Kujau.
- o Minor bugfixes (sandbox):
- - Allow glibc fatal errors to be sent to stderr before Tor exits.
- Previously, glibc would try to write them to /dev/tty, and the
- sandbox would trap the call and make Tor exit prematurely. Fixes
- bug 14759; bugfix on 0.2.5.1-alpha.
- o Minor bugfixes (shutdown):
- - When shutting down, always call event_del() on lingering read or
- write events before freeing them. Otherwise, we risk double-frees
- or read-after-frees in event_base_free(). Fixes bug 12985; bugfix
- on 0.1.0.2-rc.
- o Minor bugfixes (small memory leaks):
- - Avoid leaking memory when using IPv6 virtual address mappings.
- Fixes bug 14123; bugfix on 0.2.4.7-alpha. Patch by Tom van
- der Woerdt.
- o Minor bugfixes (statistics):
- - Increase period over which bandwidth observations are aggregated
- from 15 minutes to 4 hours. Fixes bug 13988; bugfix on 0.0.8pre1.
- o Minor bugfixes (systemd support):
- - Fix detection and operation of systemd watchdog. Fixes part of bug
- 14141; bugfix on 0.2.6.2-alpha. Patch from Tomasz Torcz.
- - Run correctly under systemd with the RunAsDaemon option set. Fixes
- part of bug 14141; bugfix on 0.2.5.7-rc. Patch from Tomasz Torcz.
- - Inform the systemd supervisor about more changes in the Tor
- process status. Implements part of ticket 14141. Patch from
- Tomasz Torcz.
- - Cause the "--disable-systemd" option to actually disable systemd
- support. Fixes bug 14350; bugfix on 0.2.6.2-alpha. Patch
- from "blueness".
- o Minor bugfixes (TLS):
- - Check more thoroughly throughout the TLS code for possible
- unlogged TLS errors. Possible diagnostic or fix for bug 13319.
- o Minor bugfixes (transparent proxy):
- - Use getsockname, not getsockopt, to retrieve the address for a
- TPROXY-redirected connection. Fixes bug 13796; bugfix
- on 0.2.5.2-alpha.
- o Code simplification and refactoring:
- - Move fields related to isolating and configuring client ports into
- a shared structure. Previously, they were duplicated across
- port_cfg_t, listener_connection_t, and edge_connection_t. Failure
- to copy them correctly had been the cause of at least one bug in
- the past. Closes ticket 8546.
- - Refactor the get_interface_addresses_raw() doom-function into
- multiple smaller and simpler subfunctions. Cover the resulting
- subfunctions with unit-tests. Fixes a significant portion of
- issue 12376.
- - Remove workaround in dirserv_thinks_router_is_hs_dir() that was
- only for version <= 0.2.2.24 which is now deprecated. Closes
- ticket 14202.
- - Remove a test for a long-defunct broken version-one
- directory server.
- o Documentation:
- - Adding section on OpenBSD to our TUNING document. Thanks to mmcc
- for writing the OpenBSD-specific tips. Resolves ticket 13702.
- - Make the tor-resolve documentation match its help string and its
- options. Resolves part of ticket 14325.
- - Log a more useful error message from tor-resolve when failing to
- look up a hidden service address. Resolves part of ticket 14325.
- o Downgraded warnings:
- - Don't warn when we've attempted to contact a relay using the wrong
- ntor onion key. Closes ticket 9635.
- o Removed features:
- - To avoid confusion with the "ExitRelay" option, "ExitNode" is no
- longer silently accepted as an alias for "ExitNodes".
- - The --enable-mempool and --enable-buf-freelists options, which
- were originally created to work around bad malloc implementations,
- no longer exist. They were off-by-default in 0.2.5. Closes
- ticket 14848.
- o Testing:
- - Make the checkdir/perms test complete successfully even if the
- global umask is not 022. Fixes bug 14215; bugfix on 0.2.6.2-alpha.
- - Test that tor does not fail when key files are zero-length. Check
- that tor generates new keys, and overwrites the empty key files.
- - Test that tor generates new keys when keys are missing
- (existing behavior).
- - Test that tor does not overwrite key files that already contain
- data (existing behavior). Tests bug 13111. Patch by "teor".
- - New "make test-stem" target to run stem integration tests.
- Requires that the "STEM_SOURCE_DIR" environment variable be set.
- Closes ticket 14107.
- - Make the test_cmdline_args.py script work correctly on Windows.
- Patch from Gisle Vanem.
- - Move the slower unit tests into a new "./src/test/test-slow"
- binary that can be run independently of the other tests. Closes
- ticket 13243.
- - Avoid undefined behavior when sampling huge values from the
- Laplace distribution. This made unittests fail on Raspberry Pi.
- Bug found by Device. Fixes bug 14090; bugfix on 0.2.6.2-alpha.
- Changes in version 0.2.6.2-alpha - 2014-12-31
- Tor 0.2.6.2-alpha is the second alpha release in the 0.2.6.x series.
- It introduces a major new backend for deciding when to send cells on
- channels, which should lead down the road to big performance
- increases. It contains security and statistics features for better
- work on hidden services, and numerous bugfixes.
- This release contains many new unit tests, along with major
- performance improvements for running testing networks using Chutney.
- Thanks to a series of patches contributed by "teor", testing networks
- should now bootstrap in seconds, rather than minutes.
- o Major features (relay, infrastructure):
- - Complete revision of the code that relays use to decide which cell
- to send next. Formerly, we selected the best circuit to write on
- each channel, but we didn't select among channels in any
- sophisticated way. Now, we choose the best circuits globally from
- among those whose channels are ready to deliver traffic.
- This patch implements a new inter-cmux comparison API, a global
- high/low watermark mechanism and a global scheduler loop for
- transmission prioritization across all channels as well as among
- circuits on one channel. This schedule is currently tuned to
- (tolerantly) avoid making changes in network performance, but it
- should form the basis for major circuit performance increases in
- the future. Code by Andrea; tuning by Rob Jansen; implements
- ticket 9262.
- o Major features (hidden services):
- - Make HS port scanning more difficult by immediately closing the
- circuit when a user attempts to connect to a nonexistent port.
- Closes ticket 13667.
- - Add a HiddenServiceStatistics option that allows Tor relays to
- gather and publish statistics about the overall size and volume of
- hidden service usage. Specifically, when this option is turned on,
- an HSDir will publish an approximate number of hidden services
- that have published descriptors to it the past 24 hours. Also, if
- a relay has acted as a hidden service rendezvous point, it will
- publish the approximate amount of rendezvous cells it has relayed
- the past 24 hours. The statistics themselves are obfuscated so
- that the exact values cannot be derived. For more details see
- proposal 238, "Better hidden service stats from Tor relays". This
- feature is currently disabled by default. Implements feature 13192.
- o Major bugfixes (client, automap):
- - Repair automapping with IPv6 addresses. This automapping should
- have worked previously, but one piece of debugging code that we
- inserted to detect a regression actually caused the regression to
- manifest itself again. Fixes bug 13811 and bug 12831; bugfix on
- 0.2.4.7-alpha. Diagnosed and fixed by Francisco Blas
- Izquierdo Riera.
- o Major bugfixes (hidden services):
- - When closing an introduction circuit that was opened in parallel
- with others, don't mark the introduction point as unreachable.
- Previously, the first successful connection to an introduction
- point would make the other introduction points get marked as
- having timed out. Fixes bug 13698; bugfix on 0.0.6rc2.
- o Directory authority changes:
- - Remove turtles as a directory authority.
- - Add longclaw as a new (v3) directory authority. This implements
- ticket 13296. This keeps the directory authority count at 9.
- o Major removed features:
- - Tor clients no longer support connecting to hidden services
- running on Tor 0.2.2.x and earlier; the Support022HiddenServices
- option has been removed. (There shouldn't be any hidden services
- running these versions on the network.) Closes ticket 7803.
- o Minor features (client):
- - Validate hostnames in SOCKS5 requests more strictly. If SafeSocks
- is enabled, reject requests with IP addresses as hostnames.
- Resolves ticket 13315.
- o Minor features (controller):
- - Add a "SIGNAL HEARTBEAT" controller command that tells Tor to
- write an unscheduled heartbeat message to the log. Implements
- feature 9503.
- o Minor features (geoip):
- - Update geoip and geoip6 to the November 15 2014 Maxmind GeoLite2
- Country database.
- o Minor features (hidden services):
- - When re-enabling the network, don't try to build introduction
- circuits until we have successfully built a circuit. This makes
- hidden services come up faster when the network is re-enabled.
- Patch from "akwizgran". Closes ticket 13447.
- - When we fail to retrieve a hidden service descriptor, send the
- controller an "HS_DESC FAILED" controller event. Implements
- feature 13212.
- - New HiddenServiceDirGroupReadable option to cause hidden service
- directories and hostname files to be created group-readable. Patch
- from "anon", David Stainton, and "meejah". Closes ticket 11291.
- o Minor features (systemd):
- - Where supported, when running with systemd, report successful
- startup to systemd. Part of ticket 11016. Patch by Michael Scherer.
- - When running with systemd, support systemd watchdog messages. Part
- of ticket 11016. Patch by Michael Scherer.
- o Minor features (transparent proxy):
- - Update the transparent proxy option checks to allow for both ipfw
- and pf on OS X. Closes ticket 14002.
- - Use the correct option when using IPv6 with transparent proxy
- support on Linux. Resolves 13808. Patch by Francisco Blas
- Izquierdo Riera.
- o Minor bugfixes (preventative security, C safety):
- - When reading a hexadecimal, base-32, or base-64 encoded value from
- a string, always overwrite the whole output buffer. This prevents
- some bugs where we would look at (but fortunately, not reveal)
- uninitialized memory on the stack. Fixes bug 14013; bugfix on all
- versions of Tor.
- - Clear all memory targetted by tor_addr_{to,from}_sockaddr(), not
- just the part that's used. This makes it harder for data leak bugs
- to occur in the event of other programming failures. Resolves
- ticket 14041.
- o Minor bugfixes (client, microdescriptors):
- - Use a full 256 bits of the SHA256 digest of a microdescriptor when
- computing which microdescriptors to download. This keeps us from
- erroneous download behavior if two microdescriptor digests ever
- have the same first 160 bits. Fixes part of bug 13399; bugfix
- on 0.2.3.1-alpha.
- - Reset a router's status if its microdescriptor digest changes,
- even if the first 160 bits remain the same. Fixes part of bug
- 13399; bugfix on 0.2.3.1-alpha.
- o Minor bugfixes (compilation):
- - Silence clang warnings under --enable-expensive-hardening,
- including implicit truncation of 64 bit values to 32 bit, const
- char assignment to self, tautological compare, and additional
- parentheses around equality tests. Fixes bug 13577; bugfix
- on 0.2.5.4-alpha.
- - Fix a clang warning about checking whether an address in the
- middle of a structure is NULL. Fixes bug 14001; bugfix
- on 0.2.1.2-alpha.
- o Minor bugfixes (hidden services):
- - Correctly send a controller event when we find that a rendezvous
- circuit has finished. Fixes bug 13936; bugfix on 0.1.1.5-alpha.
- - Pre-check directory permissions for new hidden-services to avoid
- at least one case of "Bug: Acting on config options left us in a
- broken state. Dying." Fixes bug 13942; bugfix on 0.0.6pre1.
- - When adding a new hidden service (for example, via SETCONF), Tor
- no longer congratulates the user for running a relay. Fixes bug
- 13941; bugfix on 0.2.6.1-alpha.
- - When fetching hidden service descriptors, we now check not only
- for whether we got the hidden service we had in mind, but also
- whether we got the particular descriptors we wanted. This prevents
- a class of inefficient but annoying DoS attacks by hidden service
- directories. Fixes bug 13214; bugfix on 0.2.1.6-alpha. Reported
- by "special".
- o Minor bugfixes (Linux seccomp2 sandbox):
- - Make transparent proxy support work along with the seccomp2
- sandbox. Fixes part of bug 13808; bugfix on 0.2.5.1-alpha. Patch
- by Francisco Blas Izquierdo Riera.
- - Fix a memory leak in tor-resolve when running with the sandbox
- enabled. Fixes bug 14050; bugfix on 0.2.5.9-rc.
- o Minor bugfixes (logging):
- - Downgrade warnings about RSA signature failures to info log level.
- Emit a warning when an extra info document is found incompatible
- with a corresponding router descriptor. Fixes bug 9812; bugfix
- on 0.0.6rc3.
- - Make connection_ap_handshake_attach_circuit() log the circuit ID
- correctly. Fixes bug 13701; bugfix on 0.0.6.
- o Minor bugfixes (misc):
- - Stop allowing invalid address patterns like "*/24" that contain
- both a wildcard address and a bit prefix length. This affects all
- our address-range parsing code. Fixes bug 7484; bugfix
- on 0.0.2pre14.
- o Minor bugfixes (testing networks, fast startup):
- - Allow Tor to build circuits using a consensus with no exits. If
- the consensus has no exits (typical of a bootstrapping test
- network), allow Tor to build circuits once enough descriptors have
- been downloaded. This assists in bootstrapping a testing Tor
- network. Fixes bug 13718; bugfix on 0.2.4.10-alpha. Patch
- by "teor".
- - When V3AuthVotingInterval is low, give a lower If-Modified-Since
- header to directory servers. This allows us to obtain consensuses
- promptly when the consensus interval is very short. This assists
- in bootstrapping a testing Tor network. Fixes parts of bugs 13718
- and 13963; bugfix on 0.2.0.3-alpha. Patch by "teor".
- - Stop assuming that private addresses are local when checking
- reachability in a TestingTorNetwork. Instead, when testing, assume
- all OR connections are remote. (This is necessary due to many test
- scenarios running all relays on localhost.) This assists in
- bootstrapping a testing Tor network. Fixes bug 13924; bugfix on
- 0.1.0.1-rc. Patch by "teor".
- - Avoid building exit circuits from a consensus with no exits. Now
- thanks to our fix for 13718, we accept a no-exit network as not
- wholly lost, but we need to remember not to try to build exit
- circuits on it. Closes ticket 13814; patch by "teor".
- - Stop requiring exits to have non-zero bandwithcapacity in a
- TestingTorNetwork. Instead, when TestingMinExitFlagThreshold is 0,
- ignore exit bandwidthcapacity. This assists in bootstrapping a
- testing Tor network. Fixes parts of bugs 13718 and 13839; bugfix
- on 0.2.0.3-alpha. Patch by "teor".
- - Add "internal" to some bootstrap statuses when no exits are
- available. If the consensus does not contain Exits, Tor will only
- build internal circuits. In this case, relevant statuses will
- contain the word "internal" as indicated in the Tor control-
- spec.txt. When bootstrap completes, Tor will be ready to build
- internal circuits. If a future consensus contains Exits, exit
- circuits may become available. Fixes part of bug 13718; bugfix on
- 0.2.4.10-alpha. Patch by "teor".
- - Decrease minimum consensus interval to 10 seconds when
- TestingTorNetwork is set, or 5 seconds for the first consensus.
- Fix assumptions throughout the code that assume larger intervals.
- Fixes bugs 13718 and 13823; bugfix on 0.2.0.3-alpha. Patch
- by "teor".
- - Avoid excluding guards from path building in minimal test
- networks, when we're in a test network and excluding guards would
- exclude all relays. This typically occurs in incredibly small tor
- networks, and those using "TestingAuthVoteGuard *". Fixes part of
- bug 13718; bugfix on 0.1.1.11-alpha. Patch by "teor".
- o Code simplification and refactoring:
- - Stop using can_complete_circuits as a global variable; access it
- with a function instead.
- - Avoid using operators directly as macro arguments: this lets us
- apply coccinelle transformations to our codebase more directly.
- Closes ticket 13172.
- - Combine the functions used to parse ClientTransportPlugin and
- ServerTransportPlugin into a single function. Closes ticket 6456.
- - Add inline functions and convenience macros for inspecting channel
- state. Refactor the code to use convenience macros instead of
- checking channel state directly. Fixes issue 7356.
- - Document all members of was_router_added_t and rename
- ROUTER_WAS_NOT_NEW to ROUTER_IS_ALREADY_KNOWN to make it less
- confusable with ROUTER_WAS_TOO_OLD. Fixes issue 13644.
- - In connection_exit_begin_conn(), use END_CIRC_REASON_TORPROTOCOL
- constant instead of hardcoded value. Fixes issue 13840.
- - Refactor our generic strmap and digestmap types into a single
- implementation, so that we can add a new digest256map
- type trivially.
- o Documentation:
- - Document the bridge-authority-only 'networkstatus-bridges' file.
- Closes ticket 13713; patch from "tom".
- - Fix typo in PredictedPortsRelevanceTime option description in
- manpage. Resolves issue 13707.
- - Stop suggesting that users specify relays by nickname: it isn't a
- good idea. Also, properly cross-reference how to specify relays in
- all parts of manual documenting options that take a list of
- relays. Closes ticket 13381.
- - Clarify the HiddenServiceDir option description in manpage to make
- it clear that relative paths are taken with respect to the current
- working directory. Also clarify that this behavior is not
- guaranteed to remain indefinitely. Fixes issue 13913.
- o Testing:
- - New tests for many parts of channel, relay, and circuitmux
- functionality. Code by Andrea; part of 9262.
- - New tests for parse_transport_line(). Part of ticket 6456.
- - In the unit tests, use chgrp() to change the group of the unit
- test temporary directory to the current user, so that the sticky
- bit doesn't interfere with tests that check directory groups.
- Closes 13678.
- - Add unit tests for resolve_my_addr(). Part of ticket 12376; patch
- by 'rl1987'.
- Changes in version 0.2.6.1-alpha - 2014-10-30
- Tor 0.2.6.1-alpha is the first release in the Tor 0.2.6.x series. It
- includes numerous code cleanups and new tests, and fixes a large
- number of annoying bugs. Out-of-memory conditions are handled better
- than in 0.2.5, pluggable transports have improved proxy support, and
- clients now use optimistic data for contacting hidden services. Also,
- we are now more robust to changes in what we consider a parseable
- directory object, so that tightening restrictions does not have a risk
- of introducing infinite download loops.
- This is the first alpha release in a new series, so expect there to be
- bugs. Users who would rather test out a more stable branch should stay
- with 0.2.5.x for now.
- o New compiler and system requirements:
- - Tor 0.2.6.x requires that your compiler support more of the C99
- language standard than before. The 'configure' script now detects
- whether your compiler supports C99 mid-block declarations and
- designated initializers. If it does not, Tor will not compile.
- We may revisit this requirement if it turns out that a significant
- number of people need to build Tor with compilers that don't
- bother implementing a 15-year-old standard. Closes ticket 13233.
- - Tor no longer supports systems without threading support. When we
- began working on Tor, there were several systems that didn't have
- threads, or where the thread support wasn't able to run the
- threads of a single process on multiple CPUs. That no longer
- holds: every system where Tor needs to run well now has threading
- support. Resolves ticket 12439.
- o Removed platform support:
- - We no longer include special code to build on Windows CE; as far
- as we know, nobody has used Tor on Windows CE in a very long time.
- Closes ticket 11446.
- o Major features (bridges):
- - Expose the outgoing upstream HTTP/SOCKS proxy to pluggable
- transports if they are configured via the "TOR_PT_PROXY"
- environment variable. Implements proposal 232. Resolves
- ticket 8402.
- o Major features (client performance, hidden services):
- - Allow clients to use optimistic data when connecting to a hidden
- service, which should remove a round-trip from hidden service
- initialization. See proposal 181 for details. Implements
- ticket 13211.
- o Major features (directory system):
- - Upon receiving an unparseable directory object, if its digest
- matches what we expected, then don't try to download it again.
- Previously, when we got a descriptor we didn't like, we would keep
- trying to download it over and over. Closes ticket 11243.
- o Major features (sample torrc):
- - Add a new, infrequently-changed "torrc.minimal". This file is
- similar to torrc.sample, but it will change as infrequently as
- possible, for the benefit of users whose systems prompt them for
- intervention whenever a default configuration file is changed.
- Making this change allows us to update torrc.sample to be a more
- generally useful "sample torrc".
- o Major bugfixes (directory authorities):
- - Do not assign the HSDir flag to relays if they are not Valid, or
- currently hibernating. Fixes 12573; bugfix on 0.2.0.10-alpha.
- o Major bugfixes (directory bandwidth performance):
- - Don't flush the zlib buffer aggressively when compressing
- directory information for clients. This should save about 7% of
- the bandwidth currently used for compressed descriptors and
- microdescriptors. Fixes bug 11787; bugfix on 0.1.1.23.
- o Minor features (security, memory wiping):
- - Ensure we securely wipe keys from memory after
- crypto_digest_get_digest and init_curve25519_keypair_from_file
- have finished using them. Resolves ticket 13477.
- o Minor features (security, out-of-memory handling):
- - When handling an out-of-memory condition, allocate less memory for
- temporary data structures. Fixes issue 10115.
- - When handling an out-of-memory condition, consider more types of
- buffers, including those on directory connections, and zlib
- buffers. Resolves ticket 11792.
- o Minor features:
- - When identity keypair is generated for first time, log a
- congratulatory message that links to the new relay lifecycle
- document. Implements feature 10427.
- o Minor features (client):
- - Clients are now willing to send optimistic data (before they
- receive a 'connected' cell) to relays of any version. (Relays
- without support for optimistic data are no longer supported on the
- Tor network.) Resolves ticket 13153.
- o Minor features (directory authorities):
- - Don't list relays with a bandwidth estimate of 0 in the consensus.
- Implements a feature proposed during discussion of bug 13000.
- - In tor-gencert, report an error if the user provides the same
- argument more than once.
- - If a directory authority can't find a best consensus method in the
- votes that it holds, it now falls back to its favorite consensus
- method. Previously, it fell back to method 1. Neither of these is
- likely to get enough signatures, but "fall back to favorite"
- doesn't require us to maintain support an obsolete consensus
- method. Implements part of proposal 215.
- o Minor features (logging):
- - On Unix-like systems, you can now use named pipes as the target of
- the Log option, and other options that try to append to files.
- Closes ticket 12061. Patch from "carlo von lynX".
- - When opening a log file at startup, send it every log message that
- we generated between startup and opening it. Previously, log
- messages that were generated before opening the log file were only
- logged to stdout. Closes ticket 6938.
- - Add a TruncateLogFile option to overwrite logs instead of
- appending to them. Closes ticket 5583.
- o Minor features (portability, Solaris):
- - Threads are no longer disabled by default on Solaris; we believe
- that the versions of Solaris with broken threading support are all
- obsolete by now. Resolves ticket 9495.
- o Minor features (relay):
- - Re-check our address after we detect a changed IP address from
- getsockname(). This ensures that the controller command "GETINFO
- address" will report the correct value. Resolves ticket 11582.
- Patch from "ra".
- - A new AccountingRule option lets Relays set whether they'd like
- AccountingMax to be applied separately to inbound and outbound
- traffic, or applied to the sum of inbound and outbound traffic.
- Resolves ticket 961. Patch by "chobe".
- o Minor features (testing networks):
- - Add the TestingDirAuthVoteExit option, which lists nodes to assign
- the "Exit" flag regardless of their uptime, bandwidth, or exit
- policy. TestingTorNetwork must be set for this option to have any
- effect. Previously, authorities would take up to 35 minutes to
- give nodes the Exit flag in a test network. Partially implements
- ticket 13161.
- o Minor features (validation):
- - Check all date/time values passed to tor_timegm and
- parse_rfc1123_time for validity, taking leap years into account.
- Improves HTTP header validation. Implemented with bug 13476.
- - In correct_tm(), limit the range of values returned by system
- localtime(_r) and gmtime(_r) to be between the years 1 and 8099.
- This means we don't have to deal with negative or too large dates,
- even if a clock is wrong. Otherwise we might fail to read a file
- written by us which includes such a date. Fixes bug 13476.
- o Minor bugfixes (bridge clients):
- - When configured to use a bridge without an identity digest (not
- recommended), avoid launching an extra channel to it when
- bootstrapping. Fixes bug 7733; bugfix on 0.2.4.4-alpha.
- o Minor bugfixes (bridges):
- - When DisableNetwork is set, do not launch pluggable transport
- plugins, and if any are running, terminate them. Fixes bug 13213;
- bugfix on 0.2.3.6-alpha.
- o Minor bugfixes (C correctness):
- - Fix several instances of possible integer overflow/underflow/NaN.
- Fixes bug 13104; bugfix on 0.2.3.1-alpha and later. Patches
- from "teor".
- - In circuit_build_times_calculate_timeout() in circuitstats.c,
- avoid dividing by zero in the pareto calculations. This traps
- under clang's "undefined-trap" sanitizer. Fixes bug 13290; bugfix
- on 0.2.2.2-alpha.
- - Fix an integer overflow in format_time_interval(). Fixes bug
- 13393; bugfix on 0.2.0.10-alpha.
- - Set the correct day of year value when the system's localtime(_r)
- or gmtime(_r) functions fail to set struct tm. Not externally
- visible. Fixes bug 13476; bugfix on 0.0.2pre14.
- - Avoid unlikely signed integer overflow in tor_timegm on systems
- with 32-bit time_t. Fixes bug 13476; bugfix on 0.0.2pre14.
- o Minor bugfixes (client):
- - Fix smartlist_choose_node_by_bandwidth() so that relays with the
- BadExit flag are not considered worthy candidates. Fixes bug
- 13066; bugfix on 0.1.2.3-alpha.
- - Use the consensus schedule for downloading consensuses, and not
- the generic schedule. Fixes bug 11679; bugfix on 0.2.2.6-alpha.
- - Handle unsupported or malformed SOCKS5 requests properly by
- responding with the appropriate error message before closing the
- connection. Fixes bugs 12971 and 13314; bugfix on 0.0.2pre13.
- o Minor bugfixes (client, torrc):
- - Stop modifying the value of our DirReqStatistics torrc option just
- because we're not a bridge or relay. This bug was causing Tor
- Browser users to write "DirReqStatistics 0" in their torrc files
- as if they had chosen to change the config. Fixes bug 4244; bugfix
- on 0.2.3.1-alpha.
- - When GeoIPExcludeUnknown is enabled, do not incorrectly decide
- that our options have changed every time we SIGHUP. Fixes bug
- 9801; bugfix on 0.2.4.10-alpha. Patch from "qwerty1".
- o Minor bugfixes (controller):
- - Return an error when the second or later arguments of the
- "setevents" controller command are invalid events. Previously we
- would return success while silently skipping invalid events. Fixes
- bug 13205; bugfix on 0.2.3.2-alpha. Reported by "fpxnns".
- o Minor bugfixes (directory system):
- - Always believe that v3 directory authorities serve extra-info
- documents, whether they advertise "caches-extra-info" or not.
- Fixes part of bug 11683; bugfix on 0.2.0.1-alpha.
- - When running as a v3 directory authority, advertise that you serve
- extra-info documents so that clients who want them can find them
- from you too. Fixes part of bug 11683; bugfix on 0.2.0.1-alpha.
- - Check the BRIDGE_DIRINFO flag bitwise rather than using equality.
- Previously, directories offering BRIDGE_DIRINFO and some other
- flag (i.e. microdescriptors or extrainfo) would be ignored when
- looking for bridges. Partially fixes bug 13163; bugfix
- on 0.2.0.7-alpha.
- o Minor bugfixes (networking):
- - Check for orconns and use connection_or_close_for_error() rather
- than connection_mark_for_close() directly in the getsockopt()
- failure case of connection_handle_write_impl(). Fixes bug 11302;
- bugfix on 0.2.4.4-alpha.
- o Minor bugfixes (relay):
- - When generating our family list, remove spaces from around the
- entries. Fixes bug 12728; bugfix on 0.2.1.7-alpha.
- - If our previous bandwidth estimate was 0 bytes, allow publishing a
- new relay descriptor immediately. Fixes bug 13000; bugfix
- on 0.1.1.6-alpha.
- o Minor bugfixes (testing networks):
- - Fix TestingDirAuthVoteGuard to properly give out Guard flags in a
- testing network. Fixes bug 13064; bugfix on 0.2.5.2-alpha.
- - Stop using the default authorities in networks which provide both
- AlternateDirAuthority and AlternateBridgeAuthority. Partially
- fixes bug 13163; bugfix on 0.2.0.13-alpha.
- o Minor bugfixes (testing):
- - Stop spawn test failures due to a race condition between the
- SIGCHLD handler updating the process status, and the test reading
- it. Fixes bug 13291; bugfix on 0.2.3.3-alpha.
- o Minor bugfixes (testing, Windows):
- - Avoid passing an extra backslash when creating a temporary
- directory for running the unit tests on Windows. Fixes bug 12392;
- bugfix on 0.2.2.25-alpha. Patch from Gisle Vanem.
- o Minor bugfixes (windows):
- - Remove code to special-case handling of NTE_BAD_KEYSET when
- acquiring windows CryptoAPI context. This error can't actually
- occur for the parameters we're providing. Fixes bug 10816; bugfix
- on 0.0.2pre26.
- o Minor bugfixes (zlib):
- - Avoid truncating a zlib stream when trying to finalize it with an
- empty output buffer. Fixes bug 11824; bugfix on 0.1.1.23.
- o Build fixes:
- - Allow our configure script to build correctly with autoconf 2.62
- again. Fixes bug 12693; bugfix on 0.2.5.2-alpha.
- - Improve the error message from ./configure to make it clear that
- when asciidoc has not been found, the user will have to either add
- --disable-asciidoc argument or install asciidoc. Resolves
- ticket 13228.
- o Code simplification and refactoring:
- - Change the entry_is_live() function to take named bitfield
- elements instead of an unnamed list of booleans. Closes
- ticket 12202.
- - Refactor and unit-test entry_is_time_to_retry() in entrynodes.c.
- Resolves ticket 12205.
- - Use calloc and reallocarray functions instead of multiply-
- then-malloc. This makes it less likely for us to fall victim to an
- integer overflow attack when allocating. Resolves ticket 12855.
- - Use the standard macro name SIZE_MAX, instead of our
- own SIZE_T_MAX.
- - Document usage of the NO_DIRINFO and ALL_DIRINFO flags clearly in
- functions which take them as arguments. Replace 0 with NO_DIRINFO
- in a function call for clarity. Seeks to prevent future issues
- like 13163.
- - Avoid 4 null pointer errors under clang static analysis by using
- tor_assert() to prove that the pointers aren't null. Fixes
- bug 13284.
- - Rework the API of policies_parse_exit_policy() to use a bitmask to
- represent parsing options, instead of a confusing mess of
- booleans. Resolves ticket 8197.
- - Introduce a helper function to parse ExitPolicy in
- or_options_t structure.
- o Documentation:
- - Add a doc/TUNING document with tips for handling large numbers of
- TCP connections when running busy Tor relay. Update the warning
- message to point to this file when running out of sockets
- operating system is allowing to use simultaneously. Resolves
- ticket 9708.
- o Removed features:
- - We no longer remind the user about configuration options that have
- been obsolete since 0.2.3.x or earlier. Patch by Adrien Bak.
- - Remove our old, non-weighted bandwidth-based node selection code.
- Previously, we used it as a fallback when we couldn't perform
- weighted bandwidth-based node selection. But that would only
- happen in the cases where we had no consensus, or when we had a
- consensus generated by buggy or ancient directory authorities. In
- either case, it's better to use the more modern, better maintained
- algorithm, with reasonable defaults for the weights. Closes
- ticket 13126.
- - Remove the --disable-curve25519 configure option. Relays and
- clients now are required to support curve25519 and the
- ntor handshake.
- - The old "StrictEntryNodes" and "StrictExitNodes" options, which
- used to be deprecated synonyms for "StrictNodes", are now marked
- obsolete. Resolves ticket 12226.
- - Clients don't understand the BadDirectory flag in the consensus
- anymore, and ignore it.
- o Testing:
- - Refactor the function that chooses guard nodes so that it can more
- easily be tested; write some tests for it.
- - Fix and re-enable the fgets_eagain unit test. Fixes bug 12503;
- bugfix on 0.2.3.1-alpha. Patch from "cypherpunks."
- - Create unit tests for format_time_interval(). With bug 13393.
- - Add unit tests for tor_timegm signed overflow, tor_timegm and
- parse_rfc1123_time validity checks, correct_tm year clamping. Unit
- tests (visible) fixes in bug 13476.
- - Add a "coverage-html" make target to generate HTML-visualized
- coverage results when building with --enable-coverage. (Requires
- lcov.) Patch from Kevin Murray.
- - Enable the backtrace handler (where supported) when running the
- unit tests.
- - Revise all unit tests that used the legacy test_* macros to
- instead use the recommended tt_* macros. This patch was generated
- with coccinelle, to avoid manual errors. Closes ticket 13119.
- o Distribution (systemd):
- - systemd unit file: only allow tor to write to /var/lib/tor and
- /var/log/tor. The rest of the filesystem is accessible for reading
- only. Patch by intrigeri; resolves ticket 12751.
- - systemd unit file: ensure that the process and all its children
- can never gain new privileges. Patch by intrigeri; resolves
- ticket 12939.
- - systemd unit file: set up /var/run/tor as writable for the Tor
- service. Patch by intrigeri; resolves ticket 13196.
- o Removed features (directory authorities):
- - Remove code that prevented authorities from listing Tor relays
- affected by CVE-2011-2769 as guards. These relays are already
- rejected altogether due to the minimum version requirement of
- 0.2.3.16-alpha. Closes ticket 13152.
- - The "AuthDirRejectUnlisted" option no longer has any effect, as
- the fingerprints file (approved-routers) has been deprecated.
- - Directory authorities do not support being Naming dirauths anymore.
- The "NamingAuthoritativeDir" config option is now obsolete.
- - Directory authorities do not support giving out the BadDirectory
- flag anymore.
- - Directory authorities no longer advertise or support consensus
- methods 1 through 12 inclusive. These consensus methods were
- obsolete and/or insecure: maintaining the ability to support them
- served no good purpose. Implements part of proposal 215; closes
- ticket 10163.
- o Testing (test-network.sh):
- - Stop using "echo -n", as some shells' built-in echo doesn't
- support "-n". Instead, use "/bin/echo -n". Partially fixes
- bug 13161.
- - Stop an apparent test-network hang when used with make -j2. Fixes
- bug 13331.
- - Add a --delay option to test-network.sh, which configures the
- delay before the chutney network tests for data transmission.
- Partially implements ticket 13161.
- Changes in version 0.2.5.10 - 2014-10-24
- Tor 0.2.5.10 is the first stable release in the 0.2.5 series.
- It adds several new security features, including improved
- denial-of-service resistance for relays, new compiler hardening
- options, and a system-call sandbox for hardened installations on Linux
- (requires seccomp2). The controller protocol has several new features,
- resolving IPv6 addresses should work better than before, and relays
- should be a little more CPU-efficient. We've added support for more
- OpenBSD and FreeBSD transparent proxy types. We've improved the build
- system and testing infrastructure to allow unit testing of more parts
- of the Tor codebase. Finally, we've addressed several nagging pluggable
- transport usability issues, and included numerous other small bugfixes
- and features mentioned below.
- This release marks end-of-life for Tor 0.2.3.x; those Tor versions
- have accumulated many known flaws; everyone should upgrade.
- o Deprecated versions:
- - Tor 0.2.3.x has reached end-of-life; it has received no patches or
- attention for some while.
- Changes in version 0.2.5.9-rc - 2014-10-20
- Tor 0.2.5.9-rc is the third release candidate for the Tor 0.2.5.x
- series. It disables SSL3 in response to the recent "POODLE" attack
- (even though POODLE does not affect Tor). It also works around a crash
- bug caused by some operating systems' response to the "POODLE" attack
- (which does affect Tor). It also contains a few miscellaneous fixes.
- o Major security fixes:
- - Disable support for SSLv3. All versions of OpenSSL in use with Tor
- today support TLS 1.0 or later, so we can safely turn off support
- for this old (and insecure) protocol. Fixes bug 13426.
- o Major bugfixes (openssl bug workaround):
- - Avoid crashing when using OpenSSL version 0.9.8zc, 1.0.0o, or
- 1.0.1j, built with the 'no-ssl3' configuration option. Fixes bug
- 13471. This is a workaround for an OpenSSL bug.
- o Minor bugfixes:
- - Disable the sandbox name resolver cache when running tor-resolve:
- tor-resolve doesn't use the sandbox code, and turning it on was
- breaking attempts to do tor-resolve on a non-default server on
- Linux. Fixes bug 13295; bugfix on 0.2.5.3-alpha.
- o Compilation fixes:
- - Build and run correctly on systems like OpenBSD-current that have
- patched OpenSSL to remove get_cipher_by_char and/or its
- implementations. Fixes issue 13325.
- o Downgraded warnings:
- - Downgrade the severity of the 'unexpected sendme cell from client'
- from 'warn' to 'protocol warning'. Closes ticket 8093.
- Changes in version 0.2.4.25 - 2014-10-20
- Tor 0.2.4.25 disables SSL3 in response to the recent "POODLE" attack
- (even though POODLE does not affect Tor). It also works around a crash
- bug caused by some operating systems' response to the "POODLE" attack
- (which does affect Tor).
- o Major security fixes (also in 0.2.5.9-rc):
- - Disable support for SSLv3. All versions of OpenSSL in use with Tor
- today support TLS 1.0 or later, so we can safely turn off support
- for this old (and insecure) protocol. Fixes bug 13426.
- o Major bugfixes (openssl bug workaround, also in 0.2.5.9-rc):
- - Avoid crashing when using OpenSSL version 0.9.8zc, 1.0.0o, or
- 1.0.1j, built with the 'no-ssl3' configuration option. Fixes bug
- 13471. This is a workaround for an OpenSSL bug.
- Changes in version 0.2.5.8-rc - 2014-09-22
- Tor 0.2.5.8-rc is the second release candidate for the Tor 0.2.5.x
- series. It fixes a bug that affects consistency and speed when
- connecting to hidden services, and it updates the location of one of
- the directory authorities.
- o Major bugfixes:
- - Clients now send the correct address for their chosen rendezvous
- point when trying to access a hidden service. They used to send
- the wrong address, which would still work some of the time because
- they also sent the identity digest of the rendezvous point, and if
- the hidden service happened to try connecting to the rendezvous
- point from a relay that already had a connection open to it,
- the relay would reuse that connection. Now connections to hidden
- services should be more robust and faster. Also, this bug meant
- that clients were leaking to the hidden service whether they were
- on a little-endian (common) or big-endian (rare) system, which for
- some users might have reduced their anonymity. Fixes bug 13151;
- bugfix on 0.2.1.5-alpha.
- o Directory authority changes:
- - Change IP address for gabelmoo (v3 directory authority).
- Changes in version 0.2.4.24 - 2014-09-22
- Tor 0.2.4.24 fixes a bug that affects consistency and speed when
- connecting to hidden services, and it updates the location of one of
- the directory authorities.
- o Major bugfixes:
- - Clients now send the correct address for their chosen rendezvous
- point when trying to access a hidden service. They used to send
- the wrong address, which would still work some of the time because
- they also sent the identity digest of the rendezvous point, and if
- the hidden service happened to try connecting to the rendezvous
- point from a relay that already had a connection open to it,
- the relay would reuse that connection. Now connections to hidden
- services should be more robust and faster. Also, this bug meant
- that clients were leaking to the hidden service whether they were
- on a little-endian (common) or big-endian (rare) system, which for
- some users might have reduced their anonymity. Fixes bug 13151;
- bugfix on 0.2.1.5-alpha.
- o Directory authority changes:
- - Change IP address for gabelmoo (v3 directory authority).
- o Minor features (geoip):
- - Update geoip and geoip6 to the August 7 2014 Maxmind GeoLite2
- Country database.
- Changes in version 0.2.5.7-rc - 2014-09-11
- Tor 0.2.5.7-rc fixes several regressions from earlier in the 0.2.5.x
- release series, and some long-standing bugs related to ORPort reachability
- testing and failure to send CREATE cells. It is the first release
- candidate for the Tor 0.2.5.x series.
- o Major bugfixes (client, startup):
- - Start making circuits as soon as DisabledNetwork is turned off.
- When Tor started with DisabledNetwork set, it would correctly
- conclude that it shouldn't build circuits, but it would mistakenly
- cache this conclusion, and continue believing it even when
- DisableNetwork is set to 0. Fixes the bug introduced by the fix
- for bug 11200; bugfix on 0.2.5.4-alpha.
- - Resume expanding abbreviations for command-line options. The fix
- for bug 4647 accidentally removed our hack from bug 586 that
- rewrote HashedControlPassword to __HashedControlSessionPassword
- when it appears on the commandline (which allowed the user to set
- her own HashedControlPassword in the torrc file while the
- controller generates a fresh session password for each run). Fixes
- bug 12948; bugfix on 0.2.5.1-alpha.
- - Warn about attempts to run hidden services and relays in the same
- process: that's probably not a good idea. Closes ticket 12908.
- o Major bugfixes (relay):
- - Avoid queuing or sending destroy cells for circuit ID zero when we
- fail to send a CREATE cell. Fixes bug 12848; bugfix on 0.0.8pre1.
- Found and fixed by "cypherpunks".
- - Fix ORPort reachability detection on relays running behind a
- proxy, by correctly updating the "local" mark on the controlling
- channel when changing the address of an or_connection_t after the
- handshake. Fixes bug 12160; bugfix on 0.2.4.4-alpha.
- o Minor features (bridge):
- - Add an ExtORPortCookieAuthFileGroupReadable option to make the
- cookie file for the ExtORPort g+r by default.
- o Minor features (geoip):
- - Update geoip and geoip6 to the August 7 2014 Maxmind GeoLite2
- Country database.
- o Minor bugfixes (logging):
- - Reduce the log severity of the "Pluggable transport proxy does not
- provide any needed transports and will not be launched." message,
- since Tor Browser includes several ClientTransportPlugin lines in
- its torrc-defaults file, leading every Tor Browser user who looks
- at her logs to see these notices and wonder if they're dangerous.
- Resolves bug 13124; bugfix on 0.2.5.3-alpha.
- - Downgrade "Unexpected onionskin length after decryption" warning
- to a protocol-warn, since there's nothing relay operators can do
- about a client that sends them a malformed create cell. Resolves
- bug 12996; bugfix on 0.0.6rc1.
- - Log more specific warnings when we get an ESTABLISH_RENDEZVOUS
- cell on a cannibalized or non-OR circuit. Resolves ticket 12997.
- - When logging information about an EXTEND2 or EXTENDED2 cell, log
- their names correctly. Fixes part of bug 12700; bugfix
- on 0.2.4.8-alpha.
- - When logging information about a relay cell whose command we don't
- recognize, log its command as an integer. Fixes part of bug 12700;
- bugfix on 0.2.1.10-alpha.
- - Escape all strings from the directory connection before logging
- them. Fixes bug 13071; bugfix on 0.1.1.15. Patch from "teor".
- o Minor bugfixes (controller):
- - Restore the functionality of CookieAuthFileGroupReadable. Fixes
- bug 12864; bugfix on 0.2.5.1-alpha.
- - Actually send TRANSPORT_LAUNCHED and HS_DESC events to
- controllers. Fixes bug 13085; bugfix on 0.2.5.1-alpha. Patch
- by "teor".
- o Minor bugfixes (compilation):
- - Fix compilation of test.h with MSVC. Patch from Gisle Vanem;
- bugfix on 0.2.5.5-alpha.
- - Make the nmake make files work again. Fixes bug 13081. Bugfix on
- 0.2.5.1-alpha. Patch from "NewEraCracker".
- - In routerlist_assert_ok(), don't take the address of a
- routerinfo's cache_info member unless that routerinfo is non-NULL.
- Fixes bug 13096; bugfix on 0.1.1.9-alpha. Patch by "teor".
- - Fix a large number of false positive warnings from the clang
- analyzer static analysis tool. This should make real warnings
- easier for clang analyzer to find. Patch from "teor". Closes
- ticket 13036.
- o Distribution (systemd):
- - Verify configuration file via ExecStartPre in the systemd unit
- file. Patch from intrigeri; resolves ticket 12730.
- - Explicitly disable RunAsDaemon in the systemd unit file. Our
- current systemd unit uses "Type = simple", so systemd does not
- expect tor to fork. If the user has "RunAsDaemon 1" in their
- torrc, then things won't work as expected. This is e.g. the case
- on Debian (and derivatives), since there we pass "--defaults-torrc
- /usr/share/tor/tor-service-defaults-torrc" (that contains
- "RunAsDaemon 1") by default. Patch by intrigeri; resolves
- ticket 12731.
- o Documentation:
- - Adjust the URLs in the README to refer to the new locations of
- several documents on the website. Fixes bug 12830. Patch from
- Matt Pagan.
- - Document 'reject6' and 'accept6' ExitPolicy entries. Resolves
- ticket 12878.
- Changes in version 0.2.5.6-alpha - 2014-07-28
- Tor 0.2.5.6-alpha brings us a big step closer to slowing down the
- risk from guard rotation, and fixes a variety of other issues to get
- us closer to a release candidate.
- o Major features (also in 0.2.4.23):
- - Make the number of entry guards configurable via a new
- NumEntryGuards consensus parameter, and the number of directory
- guards configurable via a new NumDirectoryGuards consensus
- parameter. Implements ticket 12688.
- o Major bugfixes (also in 0.2.4.23):
- - Fix a bug in the bounds-checking in the 32-bit curve25519-donna
- implementation that caused incorrect results on 32-bit
- implementations when certain malformed inputs were used along with
- a small class of private ntor keys. This bug does not currently
- appear to allow an attacker to learn private keys or impersonate a
- Tor server, but it could provide a means to distinguish 32-bit Tor
- implementations from 64-bit Tor implementations. Fixes bug 12694;
- bugfix on 0.2.4.8-alpha. Bug found by Robert Ransom; fix from
- Adam Langley.
- o Major bugfixes:
- - Perform circuit cleanup operations even when circuit
- construction operations are disabled (because the network is
- disabled, or because there isn't enough directory information).
- Previously, when we were not building predictive circuits, we
- were not closing expired circuits either. Fixes bug 8387; bugfix on
- 0.1.1.11-alpha. This bug became visible in 0.2.4.10-alpha when we
- became more strict about when we have "enough directory information
- to build circuits".
- o Minor features:
- - Authorities now assign the Guard flag to the fastest 25% of the
- network (it used to be the fastest 50%). Also raise the consensus
- weight that guarantees the Guard flag from 250 to 2000. For the
- current network, this results in about 1100 guards, down from 2500.
- This step paves the way for moving the number of entry guards
- down to 1 (proposal 236) while still providing reasonable expected
- performance for most users. Implements ticket 12690.
- - Update geoip and geoip6 to the July 10 2014 Maxmind GeoLite2
- Country database.
- - Slightly enhance the diagnostic message for bug 12184.
- o Minor bugfixes (also in 0.2.4.23):
- - Warn and drop the circuit if we receive an inbound 'relay early'
- cell. Those used to be normal to receive on hidden service circuits
- due to bug 1038, but the buggy Tor versions are long gone from
- the network so we can afford to resume watching for them. Resolves
- the rest of bug 1038; bugfix on 0.2.1.19.
- - Correct a confusing error message when trying to extend a circuit
- via the control protocol but we don't know a descriptor or
- microdescriptor for one of the specified relays. Fixes bug 12718;
- bugfix on 0.2.3.1-alpha.
- o Minor bugfixes:
- - Fix compilation when building with bufferevents enabled. (This
- configuration is still not expected to work, however.)
- Fixes bugs 12438, 12474, 11578; bugfixes on 0.2.5.1-alpha and
- 0.2.5.3-alpha. Patches from Anthony G. Basile and Sathyanarayanan
- Gunasekaran.
- - Compile correctly with builds and forks of OpenSSL (such as
- LibreSSL) that disable compression. Fixes bug 12602; bugfix on
- 0.2.1.1-alpha. Patch from "dhill".
- Changes in version 0.2.4.23 - 2014-07-28
- Tor 0.2.4.23 brings us a big step closer to slowing down the risk from
- guard rotation, and also backports several important fixes from the
- Tor 0.2.5 alpha release series.
- o Major features:
- - Clients now look at the "usecreatefast" consensus parameter to
- decide whether to use CREATE_FAST or CREATE cells for the first hop
- of their circuit. This approach can improve security on connections
- where Tor's circuit handshake is stronger than the available TLS
- connection security levels, but the tradeoff is more computational
- load on guard relays. Implements proposal 221. Resolves ticket 9386.
- - Make the number of entry guards configurable via a new
- NumEntryGuards consensus parameter, and the number of directory
- guards configurable via a new NumDirectoryGuards consensus
- parameter. Implements ticket 12688.
- o Major bugfixes:
- - Fix a bug in the bounds-checking in the 32-bit curve25519-donna
- implementation that caused incorrect results on 32-bit
- implementations when certain malformed inputs were used along with
- a small class of private ntor keys. This bug does not currently
- appear to allow an attacker to learn private keys or impersonate a
- Tor server, but it could provide a means to distinguish 32-bit Tor
- implementations from 64-bit Tor implementations. Fixes bug 12694;
- bugfix on 0.2.4.8-alpha. Bug found by Robert Ransom; fix from
- Adam Langley.
- o Minor bugfixes:
- - Warn and drop the circuit if we receive an inbound 'relay early'
- cell. Those used to be normal to receive on hidden service circuits
- due to bug 1038, but the buggy Tor versions are long gone from
- the network so we can afford to resume watching for them. Resolves
- the rest of bug 1038; bugfix on 0.2.1.19.
- - Correct a confusing error message when trying to extend a circuit
- via the control protocol but we don't know a descriptor or
- microdescriptor for one of the specified relays. Fixes bug 12718;
- bugfix on 0.2.3.1-alpha.
- - Avoid an illegal read from stack when initializing the TLS
- module using a version of OpenSSL without all of the ciphers
- used by the v2 link handshake. Fixes bug 12227; bugfix on
- 0.2.4.8-alpha. Found by "starlight".
- o Minor features:
- - Update geoip and geoip6 to the July 10 2014 Maxmind GeoLite2
- Country database.
- Changes in version 0.2.5.5-alpha - 2014-06-18
- Tor 0.2.5.5-alpha fixes a wide variety of remaining issues in the Tor
- 0.2.5.x release series, including a couple of DoS issues, some
- performance regressions, a large number of bugs affecting the Linux
- seccomp2 sandbox code, and various other bugfixes. It also adds
- diagnostic bugfixes for a few tricky issues that we're trying to
- track down.
- o Major features (security, traffic analysis resistance):
- - Several major improvements to the algorithm used to decide when to
- close TLS connections. Previous versions of Tor closed connections
- at a fixed interval after the last time a non-padding cell was
- sent over the connection, regardless of the target of the
- connection. Now, we randomize the intervals by adding up to 50% of
- their base value, we measure the length of time since connection
- last had at least one circuit, and we allow connections to known
- ORs to remain open a little longer (15 minutes instead of 3
- minutes minimum). These changes should improve Tor's resistance
- against some kinds of traffic analysis, and lower some overhead
- from needlessly closed connections. Fixes ticket 6799.
- Incidentally fixes ticket 12023; bugfix on 0.2.5.1-alpha.
- o Major bugfixes (security, OOM, new since 0.2.5.4-alpha, also in 0.2.4.22):
- - Fix a memory leak that could occur if a microdescriptor parse
- fails during the tokenizing step. This bug could enable a memory
- exhaustion attack by directory servers. Fixes bug 11649; bugfix
- on 0.2.2.6-alpha.
- o Major bugfixes (security, directory authorities):
- - Directory authorities now include a digest of each relay's
- identity key as a part of its microdescriptor.
- This is a workaround for bug 11743 (reported by "cypherpunks"),
- where Tor clients do not support receiving multiple
- microdescriptors with the same SHA256 digest in the same
- consensus. When clients receive a consensus like this, they only
- use one of the relays. Without this fix, a hostile relay could
- selectively disable some client use of target relays by
- constructing a router descriptor with a different identity and the
- same microdescriptor parameters and getting the authorities to
- list it in a microdescriptor consensus. This fix prevents an
- attacker from causing a microdescriptor collision, because the
- router's identity is not forgeable.
- o Major bugfixes (relay):
- - Use a direct dirport connection when uploading non-anonymous
- descriptors to the directory authorities. Previously, relays would
- incorrectly use tunnel connections under a fairly wide variety of
- circumstances. Fixes bug 11469; bugfix on 0.2.4.3-alpha.
- - When a circuit accidentally has the same circuit ID for its
- forward and reverse direction, correctly detect the direction of
- cells using that circuit. Previously, this bug made roughly one
- circuit in a million non-functional. Fixes bug 12195; this is a
- bugfix on every version of Tor.
- o Major bugfixes (client, pluggable transports):
- - When managing pluggable transports, use OS notification facilities
- to learn if they have crashed, and don't attempt to kill any
- process that has already exited. Fixes bug 8746; bugfix
- on 0.2.3.6-alpha.
- o Minor features (diagnostic):
- - When logging a warning because of bug 7164, additionally check the
- hash table for consistency (as proposed on ticket 11737). This may
- help diagnose bug 7164.
- - When we log a heartbeat, log how many one-hop circuits we have
- that are at least 30 minutes old, and log status information about
- a few of them. This is an attempt to track down bug 8387.
- - When encountering an unexpected CR while writing text to a file on
- Windows, log the name of the file. Should help diagnosing
- bug 11233.
- - Give more specific warnings when a client notices that an onion
- handshake has failed. Fixes ticket 9635.
- - Add significant new logging code to attempt to diagnose bug 12184,
- where relays seem to run out of available circuit IDs.
- - Improve the diagnostic log message for bug 8387 even further to
- try to improve our odds of figuring out why one-hop directory
- circuits sometimes do not get closed.
- o Minor features (security, memory management):
- - Memory allocation tricks (mempools and buffer freelists) are now
- disabled by default. You can turn them back on with
- --enable-mempools and --enable-buf-freelists respectively. We're
- disabling these features because malloc performance is good enough
- on most platforms, and a similar feature in OpenSSL exacerbated
- exploitation of the Heartbleed attack. Resolves ticket 11476.
- o Minor features (security):
- - Apply the secure SipHash-2-4 function to the hash table mapping
- circuit IDs and channels to circuits. We missed this one when we
- were converting all the other hash functions to use SipHash back
- in 0.2.5.3-alpha. Resolves ticket 11750.
- o Minor features (build):
- - The configure script has a --disable-seccomp option to turn off
- support for libseccomp on systems that have it, in case it (or
- Tor's use of it) is broken. Resolves ticket 11628.
- o Minor features (other):
- - Update geoip and geoip6 to the June 4 2014 Maxmind GeoLite2
- Country database.
- o Minor bugfixes (security, new since 0.2.5.4-alpha, also in 0.2.4.22):
- - When running a hidden service, do not allow TunneledDirConns 0;
- this will keep the hidden service from running, and also
- make it publish its descriptors directly over HTTP. Fixes bug 10849;
- bugfix on 0.2.1.1-alpha.
- o Minor bugfixes (performance):
- - Avoid a bug where every successful connection made us recompute
- the flag telling us whether we have sufficient information to
- build circuits. Previously, we would forget our cached value
- whenever we successfully opened a channel (or marked a router as
- running or not running for any other reason), regardless of
- whether we had previously believed the router to be running. This
- forced us to run an expensive update operation far too often.
- Fixes bug 12170; bugfix on 0.1.2.1-alpha.
- - Avoid using tor_memeq() for checking relay cell integrity. This
- removes a possible performance bottleneck. Fixes part of bug
- 12169; bugfix on 0.2.1.31.
- o Minor bugfixes (compilation):
- - Fix compilation of test_status.c when building with MVSC. Bugfix
- on 0.2.5.4-alpha. Patch from Gisle Vanem.
- - Resolve GCC complaints on OpenBSD about discarding constness in
- TO_{ORIGIN,OR}_CIRCUIT functions. Fixes part of bug 11633; bugfix
- on 0.1.1.23. Patch from Dana Koch.
- - Resolve clang complaints on OpenBSD with -Wshorten-64-to-32 due to
- treatment of long and time_t as comparable types. Fixes part of
- bug 11633. Patch from Dana Koch.
- - Make Tor compile correctly with --disable-buf-freelists. Fixes bug
- 11623; bugfix on 0.2.5.3-alpha.
- - When deciding whether to build the 64-bit curve25519
- implementation, detect platforms where we can compile 128-bit
- arithmetic but cannot link it. Fixes bug 11729; bugfix on
- 0.2.4.8-alpha. Patch from "conradev".
- - Fix compilation when DNS_CACHE_DEBUG is enabled. Fixes bug 11761;
- bugfix on 0.2.3.13-alpha. Found by "cypherpunks".
- - Fix compilation with dmalloc. Fixes bug 11605; bugfix
- on 0.2.4.10-alpha.
- o Minor bugfixes (Directory server):
- - When sending a compressed set of descriptors or microdescriptors,
- make sure to finalize the zlib stream. Previously, we would write
- all the compressed data, but if the last descriptor we wanted to
- send was missing or too old, we would not mark the stream as
- finished. This caused problems for decompression tools. Fixes bug
- 11648; bugfix on 0.1.1.23.
- o Minor bugfixes (Linux seccomp sandbox):
- - Make the seccomp sandbox code compile under ARM Linux. Fixes bug
- 11622; bugfix on 0.2.5.1-alpha.
- - Avoid crashing when re-opening listener ports with the seccomp
- sandbox active. Fixes bug 12115; bugfix on 0.2.5.1-alpha.
- - Avoid crashing with the seccomp sandbox enabled along with
- ConstrainedSockets. Fixes bug 12139; bugfix on 0.2.5.1-alpha.
- - When we receive a SIGHUP with the sandbox enabled, correctly
- support rotating our log files. Fixes bug 12032; bugfix
- on 0.2.5.1-alpha.
- - Avoid crash when running with sandboxing enabled and
- DirReqStatistics not disabled. Fixes bug 12035; bugfix
- on 0.2.5.1-alpha.
- - Fix a "BUG" warning when trying to write bridge-stats files with
- the Linux syscall sandbox filter enabled. Fixes bug 12041; bugfix
- on 0.2.5.1-alpha.
- - Prevent the sandbox from crashing on startup when run with the
- --enable-expensive-hardening configuration option. Fixes bug
- 11477; bugfix on 0.2.5.4-alpha.
- - When running with DirPortFrontPage and sandboxing both enabled,
- reload the DirPortFrontPage correctly when restarting. Fixes bug
- 12028; bugfix on 0.2.5.1-alpha.
- - Don't try to enable the sandbox when using the Tor binary to check
- its configuration, hash a passphrase, or so on. Doing so was
- crashing on startup for some users. Fixes bug 11609; bugfix
- on 0.2.5.1-alpha.
- - Avoid warnings when running with sandboxing and node statistics
- enabled at the same time. Fixes part of 12064; bugfix on
- 0.2.5.1-alpha. Patch from Michael Wolf.
- - Avoid warnings when running with sandboxing enabled at the same
- time as cookie authentication, hidden services, or directory
- authority voting. Fixes part of 12064; bugfix on 0.2.5.1-alpha.
- - Do not allow options that require calls to exec to be enabled
- alongside the seccomp2 sandbox: they will inevitably crash. Fixes
- bug 12043; bugfix on 0.2.5.1-alpha.
- - Handle failures in getpwnam()/getpwuid() when running with the
- User option set and the Linux syscall sandbox enabled. Fixes bug
- 11946; bugfix on 0.2.5.1-alpha.
- - Refactor the getaddrinfo workaround that the seccomp sandbox uses
- to avoid calling getaddrinfo() after installing the sandbox
- filters. Previously, it preloaded a cache with the IPv4 address
- for our hostname, and nothing else. Now, it loads the cache with
- every address that it used to initialize the Tor process. Fixes
- bug 11970; bugfix on 0.2.5.1-alpha.
- o Minor bugfixes (pluggable transports):
- - Enable the ExtORPortCookieAuthFile option, to allow changing the
- default location of the authentication token for the extended OR
- Port as used by sever-side pluggable transports. We had
- implemented this option before, but the code to make it settable
- had been omitted. Fixes bug 11635; bugfix on 0.2.5.1-alpha.
- - Avoid another 60-second delay when starting Tor in a pluggable-
- transport-using configuration when we already have cached
- descriptors for our bridges. Fixes bug 11965; bugfix
- on 0.2.3.6-alpha.
- o Minor bugfixes (client):
- - Avoid "Tried to open a socket with DisableNetwork set" warnings
- when starting a client with bridges configured and DisableNetwork
- set. (Tor launcher starts Tor with DisableNetwork set the first
- time it runs.) Fixes bug 10405; bugfix on 0.2.3.9-alpha.
- o Minor bugfixes (testing):
- - The Python parts of the test scripts now work on Python 3 as well
- as Python 2, so systems where '/usr/bin/python' is Python 3 will
- no longer have the tests break. Fixes bug 11608; bugfix
- on 0.2.5.2-alpha.
- - When looking for versions of python that we could run the tests
- with, check for "python2.7" and "python3.3"; previously we were
- only looking for "python", "python2", and "python3". Patch from
- Dana Koch. Fixes bug 11632; bugfix on 0.2.5.2-alpha.
- - Fix all valgrind warnings produced by the unit tests. There were
- over a thousand memory leak warnings previously, mostly produced
- by forgetting to free things in the unit test code. Fixes bug
- 11618, bugfixes on many versions of Tor.
- o Minor bugfixes (tor-fw-helper):
- - Give a correct log message when tor-fw-helper fails to launch.
- (Previously, we would say something like "tor-fw-helper sent us a
- string we could not parse".) Fixes bug 9781; bugfix
- on 0.2.4.2-alpha.
- o Minor bugfixes (relay, threading):
- - Check return code on spawn_func() in cpuworker code, so that we
- don't think we've spawned a nonworking cpuworker and write junk to
- it forever. Fix related to bug 4345; bugfix on all released Tor
- versions. Found by "skruffy".
- - Use a pthread_attr to make sure that spawn_func() cannot return an
- error while at the same time launching a thread. Fix related to
- bug 4345; bugfix on all released Tor versions. Reported
- by "cypherpunks".
- o Minor bugfixes (relay, oom prevention):
- - Correctly detect the total available system memory. We tried to do
- this in 0.2.5.4-alpha, but the code was set up to always return an
- error value, even on success. Fixes bug 11805; bugfix
- on 0.2.5.4-alpha.
- o Minor bugfixes (relay, other):
- - We now drop CREATE cells for already-existent circuit IDs and for
- zero-valued circuit IDs, regardless of other factors that might
- otherwise have called for DESTROY cells. Fixes bug 12191; bugfix
- on 0.0.8pre1.
- - Avoid an illegal read from stack when initializing the TLS module
- using a version of OpenSSL without all of the ciphers used by the
- v2 link handshake. Fixes bug 12227; bugfix on 0.2.4.8-alpha. Found
- by "starlight".
- - When rejecting DATA cells for stream_id zero, still count them
- against the circuit's deliver window so that we don't fail to send
- a SENDME. Fixes bug 11246; bugfix on 0.2.4.10-alpha.
- o Minor bugfixes (logging):
- - Fix a misformatted log message about delayed directory fetches.
- Fixes bug 11654; bugfix on 0.2.5.3-alpha.
- - Squelch a spurious LD_BUG message "No origin circuit for
- successful SOCKS stream" in certain hidden service failure cases;
- fixes bug 10616.
- o Distribution:
- - Include a tor.service file in contrib/dist for use with systemd.
- Some distributions will be able to use this file unmodified;
- others will need to tweak it, or write their own. Patch from Jamie
- Nguyen; resolves ticket 8368.
- o Documentation:
- - Clean up several option names in the manpage to match their real
- names, add the missing documentation for a couple of testing and
- directory authority options, remove the documentation for a
- V2-directory fetching option that no longer exists. Resolves
- ticket 11634.
- - Correct the documenation so that it lists the correct directory
- for the stats files. (They are in a subdirectory called "stats",
- not "status".)
- - In the manpage, move more authority-only options into the
- directory authority section so that operators of regular directory
- caches don't get confused.
- o Package cleanup:
- - The contrib directory has been sorted and tidied. Before, it was
- an unsorted dumping ground for useful and not-so-useful things.
- Now, it is divided based on functionality, and the items which
- seemed to be nonfunctional or useless have been removed. Resolves
- ticket 8966; based on patches from "rl1987".
- o Removed code:
- - Remove /tor/dbg-stability.txt URL that was meant to help debug WFU
- and MTBF calculations, but that nobody was using. Fixes ticket 11742.
- - The TunnelDirConns and PreferTunnelledDirConns options no longer
- exist; tunneled directory connections have been available since
- 0.1.2.5-alpha, and turning them off is not a good idea. This is a
- brute-force fix for 10849, where "TunnelDirConns 0" would break
- hidden services.
- Changes in version 0.2.4.22 - 2014-05-16
- Tor 0.2.4.22 backports numerous high-priority fixes from the Tor 0.2.5
- alpha release series. These include blocking all authority signing
- keys that may have been affected by the OpenSSL "heartbleed" bug,
- choosing a far more secure set of TLS ciphersuites by default, closing
- a couple of memory leaks that could be used to run a target relay out
- of RAM, and several others.
- o Major features (security, backport from 0.2.5.4-alpha):
- - Block authority signing keys that were used on authorities
- vulnerable to the "heartbleed" bug in OpenSSL (CVE-2014-0160). (We
- don't have any evidence that these keys _were_ compromised; we're
- doing this to be prudent.) Resolves ticket 11464.
- o Major bugfixes (security, OOM):
- - Fix a memory leak that could occur if a microdescriptor parse
- fails during the tokenizing step. This bug could enable a memory
- exhaustion attack by directory servers. Fixes bug 11649; bugfix
- on 0.2.2.6-alpha.
- o Major bugfixes (TLS cipher selection, backport from 0.2.5.4-alpha):
- - The relay ciphersuite list is now generated automatically based on
- uniform criteria, and includes all OpenSSL ciphersuites with
- acceptable strength and forward secrecy. Previously, we had left
- some perfectly fine ciphersuites unsupported due to omission or
- typo. Resolves bugs 11513, 11492, 11498, 11499. Bugs reported by
- 'cypherpunks'. Bugfix on 0.2.4.8-alpha.
- - Relays now trust themselves to have a better view than clients of
- which TLS ciphersuites are better than others. (Thanks to bug
- 11513, the relay list is now well-considered, whereas the client
- list has been chosen mainly for anti-fingerprinting purposes.)
- Relays prefer: AES over 3DES; then ECDHE over DHE; then GCM over
- CBC; then SHA384 over SHA256 over SHA1; and last, AES256 over
- AES128. Resolves ticket 11528.
- - Clients now try to advertise the same list of ciphersuites as
- Firefox 28. This change enables selection of (fast) GCM
- ciphersuites, disables some strange old ciphers, and stops
- advertising the ECDH (not to be confused with ECDHE) ciphersuites.
- Resolves ticket 11438.
- o Minor bugfixes (configuration, security):
- - When running a hidden service, do not allow TunneledDirConns 0:
- trying to set that option together with a hidden service would
- otherwise prevent the hidden service from running, and also make
- it publish its descriptors directly over HTTP. Fixes bug 10849;
- bugfix on 0.2.1.1-alpha.
- o Minor bugfixes (controller, backport from 0.2.5.4-alpha):
- - Avoid sending a garbage value to the controller when a circuit is
- cannibalized. Fixes bug 11519; bugfix on 0.2.3.11-alpha.
- o Minor bugfixes (exit relay, backport from 0.2.5.4-alpha):
- - Stop leaking memory when we successfully resolve a PTR record.
- Fixes bug 11437; bugfix on 0.2.4.7-alpha.
- o Minor bugfixes (bridge client, backport from 0.2.5.4-alpha):
- - Avoid 60-second delays in the bootstrapping process when Tor is
- launching for a second time while using bridges. Fixes bug 9229;
- bugfix on 0.2.0.3-alpha.
- o Minor bugfixes (relays and bridges, backport from 0.2.5.4-alpha):
- - Give the correct URL in the warning message when trying to run a
- relay on an ancient version of Windows. Fixes bug 9393.
- o Minor bugfixes (compilation):
- - Fix a compilation error when compiling with --disable-curve25519.
- Fixes bug 9700; bugfix on 0.2.4.17-rc.
- o Minor bugfixes:
- - Downgrade the warning severity for the the "md was still
- referenced 1 node(s)" warning. Tor 0.2.5.4-alpha has better code
- for trying to diagnose this bug, and the current warning in
- earlier versions of tor achieves nothing useful. Addresses warning
- from bug 7164.
- o Minor features (log verbosity, backport from 0.2.5.4-alpha):
- - When we run out of usable circuit IDs on a channel, log only one
- warning for the whole channel, and describe how many circuits
- there were on the channel. Fixes part of ticket 11553.
- o Minor features (security, backport from 0.2.5.4-alpha):
- - Decrease the lower limit of MaxMemInCellQueues to 256 MBytes (but
- leave the default at 8GBytes), to better support Raspberry Pi
- users. Fixes bug 9686; bugfix on 0.2.4.14-alpha.
- o Documentation (backport from 0.2.5.4-alpha):
- - Correctly document that we search for a system torrc file before
- looking in ~/.torrc. Fixes documentation side of 9213; bugfix on
- 0.2.3.18-rc.
- Changes in version 0.2.5.4-alpha - 2014-04-25
- Tor 0.2.5.4-alpha includes several security and performance
- improvements for clients and relays, including blacklisting authority
- signing keys that were used while susceptible to the OpenSSL
- "heartbleed" bug, fixing two expensive functions on busy relays,
- improved TLS ciphersuite preference lists, support for run-time
- hardening on compilers that support AddressSanitizer, and more work on
- the Linux sandbox code.
- There are also several usability fixes for clients (especially clients
- that use bridges), two new TransPort protocols supported (one on
- OpenBSD, one on FreeBSD), and various other bugfixes.
- This release marks end-of-life for Tor 0.2.2.x; those Tor versions
- have accumulated many known flaws; everyone should upgrade.
- o Major features (security):
- - If you don't specify MaxMemInQueues yourself, Tor now tries to
- pick a good value based on your total system memory. Previously,
- the default was always 8 GB. You can still override the default by
- setting MaxMemInQueues yourself. Resolves ticket 11396.
- - Block authority signing keys that were used on authorities
- vulnerable to the "heartbleed" bug in OpenSSL (CVE-2014-0160). (We
- don't have any evidence that these keys _were_ compromised; we're
- doing this to be prudent.) Resolves ticket 11464.
- o Major features (relay performance):
- - Speed up server-side lookups of rendezvous and introduction point
- circuits by using hashtables instead of linear searches. These
- functions previously accounted between 3 and 7% of CPU usage on
- some busy relays. Resolves ticket 9841.
- - Avoid wasting CPU when extending a circuit over a channel that is
- nearly out of circuit IDs. Previously, we would do a linear scan
- over possible circuit IDs before finding one or deciding that we
- had exhausted our possibilities. Now, we try at most 64 random
- circuit IDs before deciding that we probably won't succeed. Fixes
- a possible root cause of ticket 11553.
- o Major features (seccomp2 sandbox, Linux only):
- - The seccomp2 sandbox can now run a test network for multiple hours
- without crashing. The sandbox is still experimental, and more bugs
- will probably turn up. To try it, enable "Sandbox 1" on a Linux
- host. Resolves ticket 11351.
- - Strengthen sandbox code: the sandbox can now test the arguments
- for rename(), and blocks _sysctl() entirely. Resolves another part
- of ticket 11351.
- - When the sandbox blocks a system call, it now tries to log a stack
- trace before exiting. Resolves ticket 11465.
- o Major bugfixes (TLS cipher selection):
- - The relay ciphersuite list is now generated automatically based on
- uniform criteria, and includes all OpenSSL ciphersuites with
- acceptable strength and forward secrecy. Previously, we had left
- some perfectly fine ciphersuites unsupported due to omission or
- typo. Resolves bugs 11513, 11492, 11498, 11499. Bugs reported by
- 'cypherpunks'. Bugfix on 0.2.4.8-alpha.
- - Relays now trust themselves to have a better view than clients of
- which TLS ciphersuites are better than others. (Thanks to bug
- 11513, the relay list is now well-considered, whereas the client
- list has been chosen mainly for anti-fingerprinting purposes.)
- Relays prefer: AES over 3DES; then ECDHE over DHE; then GCM over
- CBC; then SHA384 over SHA256 over SHA1; and last, AES256 over
- AES128. Resolves ticket 11528.
- - Clients now try to advertise the same list of ciphersuites as
- Firefox 28. This change enables selection of (fast) GCM
- ciphersuites, disables some strange old ciphers, and stops
- advertising the ECDH (not to be confused with ECDHE) ciphersuites.
- Resolves ticket 11438.
- o Major bugfixes (bridge client):
- - Avoid 60-second delays in the bootstrapping process when Tor is
- launching for a second time while using bridges. Fixes bug 9229;
- bugfix on 0.2.0.3-alpha.
- o Minor features (transparent proxy, *BSD):
- - Support FreeBSD's ipfw firewall interface for TransPort ports on
- FreeBSD. To enable it, set "TransProxyType ipfw". Resolves ticket
- 10267; patch from "yurivict".
- - Support OpenBSD's divert-to rules with the pf firewall for
- transparent proxy ports. To enable it, set "TransProxyType
- pf-divert". This allows Tor to run a TransPort transparent proxy
- port on OpenBSD 4.4 or later without root privileges. See the
- pf.conf(5) manual page for information on configuring pf to use
- divert-to rules. Closes ticket 10896; patch from Dana Koch.
- o Minor features (security):
- - New --enable-expensive-hardening option to enable security
- hardening options that consume nontrivial amounts of CPU and
- memory. Right now, this includes AddressSanitizer and UbSan, which
- are supported in newer versions of GCC and Clang. Closes ticket
- 11477.
- o Minor features (log verbosity):
- - Demote the message that we give when a flushing connection times
- out for too long from NOTICE to INFO. It was usually meaningless.
- Resolves ticket 5286.
- - Don't log so many notice-level bootstrapping messages at startup
- about downloading descriptors. Previously, we'd log a notice
- whenever we learned about more routers. Now, we only log a notice
- at every 5% of progress. Fixes bug 9963.
- - Warn less verbosely when receiving a malformed
- ESTABLISH_RENDEZVOUS cell. Fixes ticket 11279.
- - When we run out of usable circuit IDs on a channel, log only one
- warning for the whole channel, and describe how many circuits
- there were on the channel. Fixes part of ticket 11553.
- o Minor features (relay):
- - If a circuit timed out for at least 3 minutes, check if we have a
- new external IP address, and publish a new descriptor with the new
- IP address if it changed. Resolves ticket 2454.
- o Minor features (controller):
- - Make the entire exit policy available from the control port via
- GETINFO exit-policy
|